https://gleam.run/ Lucy the star, Gleam's mascot Gleam News Community Sponsor Documentation GitHub Lucy the star, Gleam's mascot Gleam is a friendly language for building type-safe systems that scale! Getting Started a soft wavey boundary between two sections of the website The power of a type system, the expressiveness of functional programming, and the reliability of the highly concurrent, fault tolerant Erlang runtime, with a familiar and modern syntax. import gleam/io pub fn main() { io.println("hello, friend!") } Kindly supported by Fly Reliable and scalable Running on the battle-tested Erlang virtual machine that powers planet-scale systems such as WhatsApp and Ericsson, Gleam is ready for workloads of any size. Thanks to a multi-core actor based concurrency system that can run millions of concurrent tasks, fast immutable data structures, and a concurrent garbage collector that never stops the world, your service can scale and stay lightning fast with ease. fn spawn_task(i) { task.async(fn() { let n = int.to_string(i) io.println("Hello from " <> n) }) } pub fn main() { // Run loads of threads, no problem list.range(0, 200_000) |> list.map(spawn_task) |> list.each(task.await_forever) } Ready when you are Gleam comes with compiler, build tool, formatter, editor integrations, and package manager all built in, so creating a Gleam project is just running gleam new. As part of the wider BEAM ecosystem, Gleam programs can use thousands of published packages, whether they are written in Gleam, Erlang, or Elixir. (main) gleam add gleam_json Resolving versions Downloading packages Downloaded 2 packages in 0.01s Added gleam_json v0.5.0 (main) gleam test Compiling thoas Compiling gleam_json Compiling app Compiled in 1.67s Running app_test.main . 1 tests, 0 failures Here to help No null values, no exceptions, clear error messages, and a practical type system. Whether you're writing new code or maintaining old code, Gleam is designed to make your job as fun and stress-free as possible. error: Unknown record field +- ./src/app.gleam:8:16 | 8 | user.alias | ^^^^^^ Did you mean `name`? The value being accessed has this type: User It has these fields: .name Multilingual Gleam makes it easy to use code written in other BEAM languages such as Erlang and Elixir, so there's a rich ecosystem of thousands of open source libraries for Gleam users to make use of. Gleam can additionally compile to JavaScript, enabling you to use your code in the browser, or anywhere else JavaScript can run. It also generates TypeScript definitions, so you can interact with your Gleam code confidently, even from the outside. @external(erlang, "Elixir.HPAX", "new") pub fn new(size: Int) -> Table pub fn register_event_handler() { let el = document.query_selector("a") element.add_event_listener(el, fn() { io.println("Clicked!") }) } Friendly 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. a soft wavey boundary between two sections of the website Lovely people If you enjoy Gleam consider becoming a sponsor (or tell your boss to) * Carlos Saltos * Praveen Perera * Chris Ohk * Wilson Silva * Alembic * Josef Richter * Sam Aaron * Alexander Koutmos * Tristan Sloughter * Noah Betzen * brettkolodny * Jen Stehlik * Anthony Scotti * Adam Mokan * Fernando Farias * Chris Rybicki * Seve Salazar * Ben Marx * John Gallagher * Dmitry Poroh * Natanael Sirqueira * Kieran Gill * Mike Roach * Ocean Armstrong Lewis * Dan Dresselhaus * Barry Moore * Redmar Kerkhoff * Robert Attard * Zsombor Gasparin * Nicklas Sindlev Andersen * jiangplus * Parker Selbert * Henry Warren * Ivar Vong * Carlo Gilmar * John Bjork * NFIBrokerage * Simone Vittori * Sammy Isseyegh * Danielle Maywood * Pete Jodo * Willyboar * Prashant Singh Pawar * Clay * Damir Vandic * lidashuang * Jan Skriver Sorensen * Alexandre Del Vecchio * Adi Iyengar * Graeme Coupar * Tristan de Cacqueray * Chew Choon Keat * inoas * Nick Reynolds * fly.io * Timo Sulg * Aaron Gunderson * Markus * Elliott Pogue * Jonas Hedman Engstrom * Alexander Stensrud * NineFX * matt-savvy * Matt Van Horn * David Sancho * Chris Lloyd * Alex Manning * Xetera * Matthias Benkort * Brian Glusman * Scott Wey * Guilherme de Maio * Kayla Washburn * Marius Kalvo * Weizheng Liu * Danny Martini * Tyler * Signal Insights * Cole Lawrence * Giacomo Cavalieri * Michael Jones * Rico Leuthold * Dave Lucia * Edon Gashi * Ingmar Gagen * Lars Wikman * Manuel Rubio * David Bernheisel * Erik Terpstra * Yu Matsuzawa * Theo Harris * Harry Bairstow * max-tern * Leon Qadirie * James MacAulay * Mark Markaryan * Colin * Wolf * Szymon Wygnanski * Coder * Hex * John Palgut * SEKUN * Yasuo Higano * Terje Bakken * Martin Janiczek * Jechol Lee * Emma * Joey Kilpatrick * Gustavo Villa * Sasa Juric * Sebastian Porto * Michael Duffy * Arnaud Berthomier * Paul Gideon Dann * Ernesto Malave * Nathaniel Knight * Adam Brodzinski * Sean Jensen-Grey * OldhamMade * Cristine Guadelupe * clangley * James Birtles * Tomasz Kowal * Ian Gonzalez * Bruno Michel * Hazel Bachrach * NicoVIII * Florian Kraft * qingliangcn * Robert Ellen * Benjamin Peinhardt * Shuqian Hon * Wojtek Mach * Andy Aylward * Hayleigh Thompson * Stefan Luptak * Ole Michaelis * Mark Holmes * Filip Figiel * David Flanagan * Anthony Khong * Sarka Slavetinska * Raul Chouza * Ben Myles * Christopher Keele You're still here? Well, that's all this page has to say. Maybe you should go read the language introduction! Let's go! --------------------------------------------------------------------- Wanna keep in touch? Subscribe to the Gleam newsletter We send emails at most a few times a year, and we'll never share your email with anyone else. This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply. Lucy the star, Gleam's mascot Gleam * News * Cheat sheets * Discord * Language tour * GitHub * Documentation * Sponsor * Packages * (c) 2023 Louis Pilfold * Code of conduct