[HN Gopher] Gleam v1.12
___________________________________________________________________
Gleam v1.12
Author : Alupis
Score : 120 points
Date : 2025-08-06 17:57 UTC (5 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| Alupis wrote:
| Some highlights from this release are listed here[1].
|
| The best part of Gleam in my opinion is the language's design.
| It's just so elegant to read and write. Take this example code
| snippet from the release notes: pub fn
| find_book() -> Result(Book, LibraryError) { case
| ask_for_isbn() { Error(error) -> Error(error)
| Ok(isbn) -> load_book(isbn) } }
|
| It's a trivial code snippet, but I'm finding this kind of "first
| class" pattern matching produces very readable, elegant-looking,
| well organized code.
|
| There was a discussion the other day about the pipe operator
| being added to PHP 8.x. Gleam was my first language which
| included a pipe operator. Now, having used it a bit, I feel every
| language should have something like it. pub fn
| hello_test() { telephone.ring() |>
| should.equal("Hello, Joe!") }
|
| The pipe skips so much boilerplate and clearly communicates
| intent. Absolutely love it.
|
| [1] https://gleam.run/news/no-more-dependency-management-
| headach...
| steve_adams_86 wrote:
| I'm so envious of this. In TypeScript I use ts-pattern and
| Effect Schema, and while they make this logic way nicer, it's
| insanely verbose and doesn't offer any of the niceties of being
| first class.
| Alupis wrote:
| I have not used it at all, but Gleam does have a javascript
| target in it's compiler/build-tool. So in theory, you can
| write Gleam (strongly typed, etc) and produce js.
|
| I've exclusively used the BEAM/Erlang target so far - but the
| js community within Gleam seems quite interesting.
| steve_adams_86 wrote:
| I've been considering trying this, but my team already
| struggles to properly adopt TypeScript so I'm fairly sure
| introducing Gleam would cause a few people to throw me out
| a window.
| giraffe_lady wrote:
| Gleam is so much smaller and easier than typescript and
| the type system works harder for what it is. TS gets you
| because it is similar to javascript in some ways that
| make it easier to start the transition. But a complete js
| -> ts transition is about as big a deal as it would be
| from js to any other language, except you can use the
| same external libraries.
| giacomocava wrote:
| Omg yes, pattern matching is such an amazing feature I miss it
| dearly in languages that don't have it!
| ZpJuUuNaQ5 wrote:
| >It's just so elegant to read and write.
|
| Interesting. I was just about to write the opposite. I tried
| Gleam to solve last year's Advent of Code, and it felt like a
| weird mix between Rust and Elixir. You can't write code as
| elegantly as you'd do in Elixir, which was somewhat
| disappointing. I switched back to Elixir after a couple of
| days. I think the biggest advantage of Gleam is static type
| system.
| lpil wrote:
| If you've examples of code you have in Elixir that you could
| not express well in Gleam I would be very happy to help you
| out with that.
|
| The two languages are almost the same at the value level, so
| code should translate across well.
| Alupis wrote:
| Depending when this was, it was likely pre-1.x days? Things
| moved very quickly there for a while - it's worth checking
| back in again.
|
| Gleam seems to have a lot of obvious influences from Rust,
| and the creator is a rust dev.
|
| While the Gleam ecosystem is vastly less mature than Elixir's
| or Rust's (because it's literally younger), the language
| itself, I've found, is vastly more pleasant to read/write.
| YMMV of course.
| lpil wrote:
| > Gleam seems to have a lot of obvious influences from
| Rust, and the creator is a rust dev.
|
| Hi! That's me!
|
| Gleam the language doesn't have any Rust influence really.
| It's a happy accident that some of the syntax ended up
| looking the same, but that's likely due to both being
| inspired by similar languages such as OCaml and the C
| family. Most the syntax and the semantics predate Gleam's
| compiler being rewritten in Rust.
|
| The build tool is a rip-off of Cargo for sure though.
| Alupis wrote:
| > The build tool is a rip-off of Cargo for sure though.
|
| Hey, great artists steal, as the saying goes...
|
| It's all shaped up really nice. I'm a big fan of Gleam
| and your work in general.
| lpil wrote:
| Thank you, very kind.
| zem wrote:
| more like both gleam and rust have a strong ML influence
| (gleam might actually consider itself an ML? not sure about
| that, but it's definitely a descendant)
| innocentoldguy wrote:
| I prefer Elixir's syntax over Gleam's, but my main issue with
| Gleam is architectural. Specifically, Gleam had to bastardize
| BEAM and OTP to implement static typing. To me, static typing
| vs. dynamic typing is like having a shelf with a doily vs.
| one without a doily (the shelf works fine either way), so
| messing up a solid Actor Model implementation, for instance,
| for the sake of static typing seems like the wrong thing to
| do.
| chamomeal wrote:
| How does it bastardize the beam? Like are there things you
| can do in elixir/erlang that you couldn't with gleam?
| thijsvandien wrote:
| _Error(error) - > Error(error)_ has strong _if err != nil {
| return err; }_ vibes, and I don 't consider that a good thing.
| Alupis wrote:
| This is a trivial snippet. Often you will transform/map your
| error into another type (or deal with it in some way), so
| it's not so much `if err != nil { return err; }` vibes like
| you're thinking here.
|
| The beauty here is being compelled to handle both the happy
| and sad paths. You cannot just pretend the sad path doesn't
| exist.
| samdoesnothing wrote:
| Good Go code also wraps errors...
| wavemode wrote:
| It's not just about wrapping. use-expressions, result.try
| and result.map eliminate the boilerplate of checking for
| errors entirely: https://erikarow.land/notes/using-use-
| gleam
| debugnik wrote:
| That's what Gleam's use expressions[1] are for (the last
| example is exactly this case). Most languages with the same
| heritage as Gleam have grown a similar syntactical feature,
| such as OCaml's binding operators or F#'s computation
| expressions. Although I appreciate how simple Gleam's is
| while having similar power.
|
| [1]: https://gleam.run/news/v0.25-introducing-use-
| expressions/
| bmacho wrote:
| No, it doesn't have strong if err != nil { return err; }
| vibes.
|
| Pattern matching on Ok/Error is one of the best known error
| handling, while go error handling is one of the worst. They
| are about as far from each other as possible.
| smithcoin wrote:
| Interesting, I find myself thinking the exact opposite.
| no_wizard wrote:
| snake case convention is the only thing that always feels odd
| to me.
|
| Perhaps its because I deal in TypeScript all day, every day,
| but it never stuck with me.
|
| That said, small price to pay for a very nice runtime!
| Alupis wrote:
| I come from a background where everything is camelCase.
| Naturally I wrote my JSON this way as well, among other
| things.
|
| Switching to snake_case was challenging at first - I kept
| writing things in camelCase. Now, I've become pretty fond of
| snake_case and have a tough time going back into environments
| that require camelCase - funny thing, that is.
|
| Thankfully Gleam's build tool/language server has a fairly
| strongly opinionated formatter built in, so it will let you
| know pretty quickly and help you fix it.
| __jonas wrote:
| I come from js/ts as well and I find snake case much more
| readable than camel after using it in other languages for a
| bit. There are even js/ts projects that use snake case
| despite the camel case convention, for readability
|
| https://github.com/sveltejs/svelte/issues/3479#issuecomment-.
| ..
| plainOldText wrote:
| Yeah, CamelCase for modules, snake_case for functions and
| variables.
|
| Your brain can instantly tell what entity you're dealing
| with.
| ASalazarMX wrote:
| The official website has an interesting footer
|
| > As a community, we want to be friendly too. People from around
| the world, of all backgrounds, genders, and experience levels are
| welcome and respected equally. See our community code of conduct
| for more. Black lives matter. Trans rights are human rights. No
| nazi bullsh*t.
|
| On one hand I applaud that their community standards are
| inclusive, but on the other hand, it shouldn't be that blatantly
| ideological from the get go. It's just another programming
| language, not a political platform.
| SwiftyBug wrote:
| The Gleam community has been the best, most welcoming community
| I've ever seen on the internet. And I've been a around for a
| while. I attribute this in part to their clear stance.
| steve_adams_86 wrote:
| I was welcomed too, and strongly encouraged to contribute. It
| was really nice. Though the signals might appear abrasive to
| some, it doesn't represent an abrasive group of people at
| all.
| Alupis wrote:
| Joining their Discord and getting greeted by the language
| creator himself within a few minutes was pretty cool. Most
| other languages, their creators/maintainers seem so
| unapproachable and distant. You can talk directly with the
| core team on there, ask questions, etc. Louis really has
| built a pretty fun community around Gleam.
| batisteo wrote:
| The good thing is, you don't have to be tolerant with the
| intolerant. And that's exactly what they are advertising.
| It let the nice people flow in, as you experienced.
| steve_adams_86 wrote:
| I used to be on the fence with this, finding the ideology-
| forward attitude fairly abrasive. I've since decided that while
| I don't love it, I see the perceived necessity of it that some
| people have. I enjoy the privilege of living somewhere and
| being a person who no one cares to cause problems for. Some
| people don't have that experience, and are targeted routinely
| and unfairly. I see it like they put up these barriers and
| deterrences because they need to, not just that they want to.
| People who support them participate in that endeavour because
| it matters enough.
|
| For guys like me, it seems like a needless distraction from
| what matters. Unless I consider living a life in which there
| are people who don't want me to exist, or something. Then yeah,
| I might throw up a few "please fuck off" signs, I don't know.
| AnEro wrote:
| I used to think it was kinda pander-y, but then after
| participating in some of these communities it was just
| obnoxious when it wasn't stated, the cultural wedge between
| people. Where randomly there was drama from someone posting
| an unrelated yet offensive meme/joke, then it was a huge
| discussion on if it was ban worthy, if it was okay to joke
| about, or xyz. When really I just wanted to be nerdy with
| others.
| steve_adams_86 wrote:
| I get that. You can put up the signs, but it doesn't need
| to be a regular, loud topic in the community. In fact, the
| signs should serve to prevent the need to discuss it in the
| community and make moderation cleaner and easier.
| zdragnar wrote:
| I dunno, it seems like everyone should have learned lessons
| from the sordid scala and node drama incidents, but instead
| they're just forgotten.
|
| Don't make in groups and out groups. Just have a "be nice"
| rule and leave it at that.
| steve_adams_86 wrote:
| The trouble is that nazis think it's very nice to get rid
| of the untouchables. Life is messy, you've got to set some
| boundaries and stick to them or jerks gum up the works.
| lpil wrote:
| > It shouldn't be that blatantly ideological from the get go.
| It's just another programming language, not a political
| platform.
|
| It's first and foremost a community, and it's important for
| communities to have clear a code of conduct and moderation of
| that code.
|
| There are lots of languages without community, Gleam is not one
| of those.
| giraffe_lady wrote:
| Gleam is an incredible technical achievement and the
| community an amazing social one. You should be proud of both,
| thank you for your clear vision and commitment on this issue
| despite so much consistent external pushback.
| lpil wrote:
| Thank you, you are very kind. I am extremely proud of the
| community, they are wonderful lot.
| tuttigachimuchi wrote:
| Programming languages aren't math--they are cultural products
| that have the right to express their values and objectives
| turnsout wrote:
| Being anti-nazi is not ideological.
| ribelo wrote:
| Of course it is. You can't be against anything without an
| idea, without it you wouldn't be opposed, you'd just not give
| a shit. Not caring isn't ideological just like not believing
| in god isn't, but being anti-god? That's pure ideology.
| timeon wrote:
| Sure but 'not giving a shit' means accepting Nazism.
| AnEro wrote:
| > It's just another programming language, not a political
| platform
|
| Politics is baked into everything we do, like the lack of any
| political messaging is still a political message. With this
| approach, it weeds out those that don't align with the core
| community which is ideal for an organization that only thrives
| with volunteer involvement.
| akkad33 wrote:
| But this is not very relevant to the release announcement?
| buzzerbetrayed wrote:
| When you put distracting things on your homepage, don't be
| surprised when they're distracting
| ModernMech wrote:
| Trans people are over represented in compilers communities. You
| don't get programming languages without the hard work of people
| in the trans community. In a world where they are constantly
| under attack, it's important to make them feel safe and
| welcome. Trans people are welcome in our dev communities and
| that needs to be explicitly stated these days, because trans
| inclusion is not implied in our bigoted society.
| ForceBru wrote:
| > Shouldn't be that blatantly ideological, it's not a political
| platform
|
| Yeah! This always stands out like a sore thumb on the website.
| Like _yeah_, all of it should go without saying! You're a
| freely available programming language, of course everyone can
| use it! Of course everyone is welcome! Does a hammer care about
| your gender or race? No, anyone can use it! It's also very
| weird and a little childish to specifically include "no nazi
| bullshit". Isn't it obvious that "nazi bullshit" isn't welcome?
| Like a no-brainer? Why does a programming language feel the
| need to say this? Are prominent nazis actively showing interest
| in Gleam and trying to promote their "bullshit" with it?
|
| Also, the phrase "nazi bullshit" is severely downplaying the
| problem with the nazis. "Bullshit" is usually something mildly
| inconvenient, somewhat unfair, kinda infuriating, but it
| usually doesn't threaten anybody and doesn't fuel world wars.
| atomfinger wrote:
| > Isn't it obvious that "nazi bullshit" isn't welcome? Like a
| no-brainer?
|
| Unfortunately, not in this day and age.
|
| > Why does a programming language feel the need to say this?
|
| It's less about "the language saying it" and more about the
| standards of the community that surrounds the language.
|
| For a language to thrive, it needs a community of people
| contributing to it. If it doesn't, it'll eventually die
| unused. As such, there's more than "just the language"; it is
| also a community-building effort.
|
| > Also, the phrase "nazi bullshit" is severely...
|
| IMHO, you're reading too much into the word "bullshit".
| samdoesnothing wrote:
| No programming language community allows anything remotely
| resembling nazism, and they don't feel the need to say it out
| loud because it goes without saying. When they say it
| explicitly it's because they mean "nazi bullshit" to be
| "anything even slightly right leaning". Gleam is the most
| highly politicised language community I have ever seen by a
| long shot. I'm not making a normative claim here btw, I'm
| just sharing what I've observed.
| giraffe_lady wrote:
| HN itself has quite a lot of "nazi bullshit." You don't
| _usually_ , regularly see people being virulent about it
| but people frequently endorse policies that would
| absolutely have fit cleanly into the historical nazi
| party's platform. Things like race science and
| eliminationist policies against the homeless, anti-
| immigration stances, homo- and transphobia are particularly
| popular. People here are normally "polite" about it and we
| seem to all have decided that means it doesn't count. It
| does count.
| arrowsmith wrote:
| I've never used Gleam and really don't care either way about
| the creator's politics, but it would be nice to see Gleam hit
| the HN front page for once without this same tedious
| conversation getting repeated every time.
|
| Isn't there something more interesting we can talk about?
| brightball wrote:
| Great talk on Gleam from August last year.
|
| https://youtu.be/vyEWc0-kbkw
| okkdev wrote:
| The link should probably point to the excellent 1.12.0 post on
| the website: https://gleam.run/news/no-more-dependency-
| management-headach...
| mistahchris wrote:
| I really like gleam. I have a few unfinished side projects in
| gleam with about 10k lines of code, so I've had enough of a taste
| to know I like it. I can't wait to see how it matures. I plan to
| write more gleam in the future. I am particularly excited about
| the possibilities of sharing more code between webapp frontends
| and backends. Gleam has so much potential and is already quite
| productive.
|
| I am not that online of a person. But I joined the discord to say
| hi and ask a few questions and I have to say the community really
| does have great vibes. If I were spending more time online, I
| would likely bias to spending it in the gleam community. They're
| a bunch of very friendly, and smart people working on a wide
| variety of interesting projects.
| ninetyninenine wrote:
| I tried to make a c-compiler in gleam. One thing I really didn't
| like is the lack of interfaces/type-classes and lack of
| composition operator.
___________________________________________________________________
(page generated 2025-08-06 23:00 UTC)