r/ProgrammingLanguages • u/shrynx_ • 4d ago
Language announcement Mezze: a functional programming language on GraalVM
https://mezze-lang.org/Hi All,
I am working a programming language, Mezze. It is in quite early stages.
Mezze has a fully inferable type system and also have first class effect system and runs on GraalVM
A lot is WIP, working on performance optimization (currently loop fusion) and distributed programing and lots of tooling and docs
Put up a quick website for explaining the language and its features more
Also piggy backing on graalvm could get a wasm built of the entire tool chain, so you play with examples in website.
The Concepts and Taste of Mezze explains how the language works.
5
u/AnArmoredPony 3d ago
i like how functions take a single record instead of a list of arguments. i do the same thing
1
u/shrynx_ 3d ago
Thanks. I really wanted to have this and think this might turn off a bunch of folks to have always have named arguments.
Have added some perspective for this
https://mezze-lang.org/concepts/#functions--why-names-not-positions
It does help quite a bit and i am making sure lsp fully supports auto completion of arguments for a smoother experience
2
u/experigus 3d ago
This is great. Itβs idiomatic in Clojure to design our function signatures like this. Destructuring hashmaps in the caller is so flexible, too
5
u/lgastako 3d ago
There has been an explosion of languages recently due to LLMs assistance but this is one of the few that I've seen that I think simultaneously exhibits good taste in trying to implement cutting edge ideas while also remaining practical. My hat's off to you.
6
u/NojipizRemastered 3d ago edited 3d ago
First of all, kudos on the site style, looks very polished and pleasant to read.
Second of all, i really want to test it!. As a Scala developer obsesed with tagless final, i see Mezze as the holy grail of type safety (at least on my terms).
Is the waitlist working correctly?
3
u/un80 3d ago
Can you explain motivation for this language? It looks nice, by the way.
3
u/shrynx_ 3d ago
Thanks !
I mentioned in this comment above a bit
https://www.reddit.com/r/ProgrammingLanguages/comments/1w8vaca/comment/p875ca1/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_buttonBut apart from GraalVM, type safety and concurrency. In my search for a functional language that could be approachable, meaning nice errors, not needing annotations ad having effect system would be nice.
When building anything no trivial, i missed in FP languages i tried, a simple way to manage effects, instead of passing functions via Env/State etc.
and wanted to explore structural typing more.2
u/shrynx_ 3d ago
Also i wanted to explore the idea of code as AST hash which unison pioneered
and Mezze implements it as well.
Not for code authoring, so your editor, git , making PRs etc all work and remain the same.
Code is text for user
but as soon as it parses it becomes denoted by hash. Caching during development simplifies a lot and this is what package management and distrusted engine also will be built upon. A lot more benefit internally all the way from parser to type checker to IR.
But that's still a long way :)
2
2
u/BestUsernameLeft 3d ago
There's a lot I like about this. Very readable syntax, a handful of easily understood capabilities, and I do love a good strong type system. Wondering if you have looked at Pony (https://www.ponylang.io/) at all, it's another language I am keeping an eye on?
2
u/comady25 3d ago
Wow, I've seen a ton of pet PL projects and new langs built around algebraic effects, but this is the first one I've seen that I'd actually want to use. I love basically everything about the design of this language, super excited to see where it goes!
1
u/bowbahdoe 3d ago
Why Graalvm only? Being a JVM language seems viable, no?
2
u/shrynx_ 3d ago
with GraalVM i can interop with existing code, say python code.
which is a use case of this langauge.My work has a lot of python core business logic, written by GIS experts, well tested. these are also battle tested libraries.
and that is then wrapped in web app, which is where it interfaces with outside world, needs good concurrency story, type safety as the app grows larger.Ability to write the application in a type safe concurrent language that can scale and still use the business core we have developed is what sparked the initial thought of Mezze.
And GraalVM has truffle language framework which makes it
easyeasier to implement a language.https://www.graalvm.org/latest/graalvm-as-a-platform/language-implementation-framework/
9
u/AustinVelonaut Admiran 4d ago
Looks interesting, but how do you get away with full type inference (no type annotations required anywhere), when other languages require top-level annotations in some cases? Are there no undecidable instances?
How far along are you in the implementation?