{"id":14109483,"url":"https://github.com/robertmuth/awesome-low-level-programming-languages","last_synced_at":"2026-01-04T06:06:24.829Z","repository":{"id":39705042,"uuid":"430123064","full_name":"robertmuth/awesome-low-level-programming-languages","owner":"robertmuth","description":"A curated list of low level programming languages (i.e. suitable for OS and game programming)","archived":false,"fork":false,"pushed_at":"2024-05-16T15:53:16.000Z","size":238,"stargazers_count":169,"open_issues_count":0,"forks_count":8,"subscribers_count":13,"default_branch":"main","last_synced_at":"2024-05-23T03:05:03.278Z","etag":null,"topics":["operating-system","progr"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/robertmuth.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-20T14:21:42.000Z","updated_at":"2024-06-01T09:02:48.459Z","dependencies_parsed_at":"2023-02-14T04:05:19.206Z","dependency_job_id":"ab6f1a78-8846-42d0-8d3c-9e73a20221f7","html_url":"https://github.com/robertmuth/awesome-low-level-programming-languages","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertmuth%2Fawesome-low-level-programming-languages","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertmuth%2Fawesome-low-level-programming-languages/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertmuth%2Fawesome-low-level-programming-languages/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/robertmuth%2Fawesome-low-level-programming-languages/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/robertmuth","download_url":"https://codeload.github.com/robertmuth/awesome-low-level-programming-languages/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243806045,"owners_count":20350775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["operating-system","progr"],"created_at":"2024-08-14T10:02:20.160Z","updated_at":"2026-01-04T06:06:24.824Z","avatar_url":"https://github.com/robertmuth.png","language":null,"readme":"# awesome-low-level-programming-languages\n\nA curated list of **low level** programming languages primarily aimed at OS and game\nprogramming.\n\n**Excluded are languages relying on managed run-times, GC, JITs, green threads, etc.**\n(For less exclusionary lists check [ChessMax](https://github.com/ChessMax/awesome-programming-languages) or\n[Wikipedia](https://en.wikipedia.org/wiki/List_of_programming_languages).)\n\nFeel free to send pull-requests with additions and corrections.\n\n\nTable of content\n\n- [awesome-low-level-programming-languages](#awesome-low-level-programming-languages)\n  - [ATS](#ats)\n  - [Ada](#ada)\n  - [Alumina](#alumina)\n  - [Beef](#beef)\n  - [C](#c)\n  - [C++](#c-1)\n  - [C2](#c2)\n  - [C3](#c3)\n  - [Carp](#carp)\n  - [Cone](#cone)\n  - [Crystal](#crystal)\n  - [CSpydr](#cspydr)\n  - [D](#d)\n  - [Forth](#forth)\n  - [Hare](#hare)\n  - [Hylo (formerly: Val)](#hylo)\n  - [Jai](#jai)\n  - [Kit](#kit)\n  - [Lobster](#lobster)\n  - [Modula-2](#modula-2)\n  - [Nim](#nim)\n  - [Oberon](#oberon)\n  - [Odin](#odin)\n  - [Pascal (FreePascal)](#pascal-freepascal)\n  - [Rust](#rust)\n  - [Scopes](#scopes)\n  - [Swift](#swift)\n  - [V](#v)\n  - [Vale](#vale)\n  - [Vox](#vox)\n  - [Zig](#zig)\n\n\nNot yet summarized (pull requests welcome):\n\n[Austral](https://github.com/austral/austral),\n[Cakelisp](https://cakelisp.handmade.network/),\n[Carbon](https://github.com/carbon-language/carbon-lang),\n[eC](https://ec-lang.org/),\n[Helix](https://github.com/helixlang/helix-lang),\n[Inko](https://inko-lang.org/),\n[Jiyu](https://jiyu.handmade.network/),\n[LitaC](https://github.com/tonysparks/litac-lang),\n[Modula-3](https://en.wikipedia.org/wiki/Modula-3),\n[Move](https://move-language.github.io/move/),\n[Myr](https://myrlang.org/),\n[Neat](https://neat-lang.github.io/),\n[Nelua](https://nelua.io/),\n[Oak](https://github.com/adam-mcdaniel/oakc/),\n[Ocen](https://github.com/ocen-lang/ocen),\n[Seed7](http://seed7.sourceforge.net/),\n[Silk](https://github.com/AjayMT/silk),\n[Sparrow](https://github.com/Sparrow-lang/sparrow),\n[Terra](https://terralang.org/),\n[Vala](https://wiki.gnome.org/Projects/Vala),\n\n\n## ATS\n\n* main: http://www.ats-lang.org/\n* repo: https://github.com/ats-lang\n* documentation:\n  - http://ats-lang.sourceforge.net/DOCUMENT/INT2PROGINATS/HTML/book1.html\n  - http://www.ats-lang.org/Documents.html\n* discussion:\n  - https://news.ycombinator.com/item?id=28214665\n  - https://news.ycombinator.com/from?site=ats-lang.org\n* implementation-language: ATS\n* meta-programming: N/A\n* backends: C\n* major projects using the language: N/A\n* syntax: functional style\n* highlights:\n  - proofs\n  - dependent types\n  - C code can be specified inline\n* [pldb](https://pldb.pub/concepts/ats.html)\n\n```\n#include \"share/atspre_staload.hats\"\n#include \"share/atspre_staload_libats_ML.hats\"\n\nimplement\nmain0() = println! (\"Hello, world!\")\n```\n\n```\nfun fibc (n: int) : int = let\n  fun loop(n: int, f0: int, f1: int): int =\n    if n \u003e 0 then loop(n-1, f1, f0+f1) else f0\n  end of [loop]\nin\n  loop(n, 0, 1)\nend // end of [fibc]\n```\n\n## Ada\n\n* main:\n  1. [Ada Information Clearing House](https://www.adaic.org)\n  2. [Ada Conformity Assessment Authority](http://www.ada-auth.org)\n  3. [Ada Language](https://ada-lang.io) (Community)\n* repo: N/A\n* documentation:\n  - Reference Manuals:\n    + [Ada 2022](http://www.ada-auth.org/standards/ada22.html) - Next\n    + [Ada 2012](http://www.ada-auth.org/standards/ada12.html) - Current\n    + [Ada 2005](https://www.adaic.org/ada-resources/standards/ada05)\n    + [Ada 1995](https://www.adaic.org/ada-resources/standards/ada-95-documents)\n    + [Ada 1983](https://www.adaic.org/ada-resources/standards/ada83) - First ISO standard\n  - awesome-ada https://github.com/ohenley/awesome-ada\n  - https://learn.adacore.com/\n  - http://groups.umd.umich.edu/cis/course.des/cis400/ada/ada.html\n* implementation-language: Ada, C\n* meta-programming: generics\n* error-handlig: exceptions\n* backends: GCC (gnat), [LLVM](https://github.com/AdaCore/gnat-llvm), several commerical implementations\n* major projects using the language: numerous\n* syntax: begin/end, type to the right of identifier\n* highlights:\n  - type refinement\n  - fixed point types\n  - multitasking built in from the start\n  - real-time constructs\n  - hierarchical package system for separate compilation\n  - design by contract\n  - standard defined FFI for C, Fortran and COBOL\n* [pldb](https://pldb.pub/concepts/ada.html)\n```\nwith Ada.Text_IO;\n\nprocedure Hello_World is\nbegin\n   Ada.Text_IO.Put_Line (\"Hello World\");\nend Hello_World;\n```\n\n```\nfunction fibonacci(n : in integer) return integer is\n f1, f2, fib : integer;\n begin\n    f1 := 0;\n    f2 := 1;\n    for i in 1..n loop\n       fib := f1 + f2;\n       f1 := f2;\n       f2 := fib;\n    end loop;\n    return fib;\n end fibonacci;\n```\n## Alumina\n\n* main: https://docs.alumina-lang.net/\n* repo: https://github.com/tibordp/alumina\n* documentation:\n  - https://docs.alumina-lang.net/\n* discussion:\n  - https://news.ycombinator.com/item?id=32702812\n* implementation-language: Rust\n* meta-programming: (hygienic) macros, (duck-typed) generics, opt-in dynamic dispatch polymorphism\n* backends: compiles to C11 with GCC/Clang extensions\n* major projects using the language: N/A\n* syntax:  curly braces, type to the right of identifier\n* highlights:\n  - defer\n  - uniform function call syntax\n  - closures\n  - block expressions\n* [pldb](https://pldb.pub/concepts/alumina.html)\n\n```\nfn main() {\n    println!(\"Hello, world!\");\n}\n\n```\n\n## Beef\n\n* main: https://www.beeflang.org/\n* repo: https://github.com/beefytech/Beef/\n* documentation:\n  - awesome-beef https://github.com/Jonathan-Racaud/awesome-beef\n* discussion:\n  - https://news.ycombinator.com/item?id=21991382\n* implementation-language: C++\n* meta-programming: generics\n* backends: LLVM\n* major projects using the language: N/A\n* syntax: curly braces, type to the left of identifier\n* highlights:\n  - inspired by C#\n  - co-designed with IDE\n  - windows centric development\n* [pldb](https://pldb.pub/concepts/beef.html)\n\n```\nusing System;\n\nnamespace Hello\n{\n    class Program\n    {\n        static void Main()\n        {\n            Console.WriteLine(\"Hello, world!\");\n        }\n    }\n}\n```\n\n```\nN/A\n```\n\n## C\n\n* main: N/A\n* repo: N/A\n* documentation:\n  - https://github.com/inputsh/awesome-c\n  - https://github.com/uhub/awesome-c\n* meta-programming: pre-processor\n* error-handling: magic return values by covention\n* backends: LLVM, gcc, numerous others\n* major projects using the language: numerous\n* syntax: curly braces, type to the left of identifier\n* highlights:\n  - ubiquitous\n  - often used as a backend\n  - no namespaces\n  - array to pointer auto conversion\n  - no defer (or RAII) mechanism\n  - lots of undefined / implementation defined behavior\n* [pldb](https://pldb.pub/concepts/c.html)\n\n```\n#include \u003cstdio.h\u003e\n\nint main() {\n  printf(\"Hello World!\");\n}\n```\n\n```\nint fib(int n) {\n    int a = 0;\n    int b = 1;\n    for (int i = 0; i \u003c n; i++) {\n       int c = a + b;\n       a = b;\n       b = c;\n    }\n    return a;\n}\n```\n\n\n## C++\n* repo:\n* documentation:\n  - standard https://isocpp.org/std/the-standard\n  - reference https://en.cppreference.com/w/\n  - awesome-cpp https://github.com/fffaraz/awesome-cpp\n  - AwesomePerfCpp https://github.com/fenbf/AwesomePerfCpp\n* meta-programming:\n  - template meta programming\n  - generics (types, functions)\n  - comptime\n  - macros\n* backends: LLVM, gcc, numerous others\n* major projects using the language: numerous\n* syntax: curly braces, type to the left of identifier\n* highlights:\n  - large user base\n  - several compilers\n  - large language (evolving)\n  - slow compiles\n* [pldb](https://pldb.pub/concepts/cpp.html)\n\n```\n#include \u003ciostream\u003e\n\nint main() {\n  std::cout \u003c\u003c \"Hello World!\" \u003c\u003c std::endl;\n}\n\n```\n\n```\nint fib(int n) {\n    int a = 0;\n    int b = 1;\n    for (int i = 0; i \u003c n; i++) {\n       const int c = a + b;\n       a = b;\n       b = c;\n    }\n    return a;\n}\n```\n\n## C2\n\n* main: http://www.c2lang.org/\n* repo: https://github.com/c2lang/\n* documentation:\n  - http://c2lang.org/site/\n* discussion:\n  - https://news.ycombinator.com/from?site=c2lang.org\n* implementation-language: C2 (self hosting)\n* hello-world: http://www.c2lang.org/site/introduction/helloworld\n* meta-programming: generics, N/A\n* backends: C\n* major projects using the language:\n  - C2 (self hosting)\n* syntax: curly braces, type to the left of identifier\n* highlights:\n  - modernized C\n* [pldb](https://pldb.pub/concepts/c2.html)\n\n```\nmodule hello_world;\n\nimport stdio as io;\n\npublic fn i32 main(i32 argc, char** argv) {\n    io.printf(\"Hello World!\\n\");\n    return 0;\n}\n```\n\n```\nfn u32 fib(u32 n) {\n    return n \u003c= 2 ? 1 : fib(n - 1) +  fib(n - 2);\n}\n```\n\n## C3\n\n* main: https://c3-lang.org/\n* repo: https://github.com/c3lang/c3c\n* documentation:\n  - https://c3-lang.org/faq/compare-languages/\n* discussion:\n  - https://news.ycombinator.com/item?id=27876570\n* implementation-language: C\n* hello-world: https://c3-lang.org/getting-started/hello-world/\n* meta-programming: generics, semantic macros\n* backends: LLVM\n* major projects using the language: N/A\n* syntax: curly braces, type to the left of identifier\n* highlights:\n  - evolution of C\n  - contracts\n* [pldb](https://pldb.pub/concepts/c3.html)\n\n```\nmodule hello_world;\n\nimport std::io;\n\nfn void main()\n{\n    io::printn(\"Hello, World!\");\n}\n```\n\n```\nfn int fib(int n) {\n    int a = 0;\n    int b = 1;\n    for (int i = 0; i \u003c n; i++) {\n       int c = a + b;\n       a = b;\n       b = c;\n    }\n    return a;\n}\n```\n\n## Carp\n\n* main: https://github.com/carp-lang/Carp\n* repo: https://github.com/carp-lang/Carp\n* documentation:\n  - language guide: https://github.com/carp-lang/Carp/blob/master/docs/LanguageGuide.md\n* discussion:\n  - https://news.ycombinator.com/item?id=28875051\n  - https://news.ycombinator.com/item?id=20368969\n* implementation-language: Haskell\n* meta-programming: generics\n* backends: N/A\n* major projects using the language:\n* syntax: Lisp like\n* highlights:\n  - repl\n  - ownership tracking\n* [pldb](https://pldb.pub/concepts/carp.html)\n\n```\n(println \"hello world\")\n```\n\n```\nN/A\n```\n\n## Cone\n\n* main: https://cone.jondgoodwin.com/\n* repo: https://github.com/jondgoodwin/cone\n* documentation:\n  - reference: https://cone.jondgoodwin.com/coneref/index.html\n* discussion:\n  - https://news.ycombinator.com/item?id=19565824\n* implementation-language: C\n* meta-programming: macros, generics (types, function, modules)\n* error-handling: execptions + special syntax for same line rethrowing/default values\n* backends: LLVM\n* major projects using the language:\n* syntax: optionally indentation sensitive, type to the right of identifier\n* highlights:\n  - [Regions and Lifetimes](https://cone.jondgoodwin.com/memory.html)\n  - [Permissions and Actors](https://cone.jondgoodwin.com/concurrency.html)\n  - [Variants, Structural Traits \u0026 Delegated Inheritance](https://cone.jondgoodwin.com/types.html)\n  - [\u003c-, with, and match](https://cone.jondgoodwin.com/complexval.html)\n\n```\nimport stdio\n\nfn main():\n  print \u003c- \"Hello world!\"\n```\n\n```\nfn fib(n i64) i64:\n  mut prior i64 = 0\n  mut result i64 = 1\n  while n-- \u003e 0:\n    prior, result = result, prior + result\n  result\n\n```\n\n## Crystal\n\n* main: https://crystal-lang.org/\n* repo: https://github.com/crystal-lang/crystal\n* note: use garbage collection but it is possible to strip out runtime (see [Lilith Kernel](https://github.com/ffwff/lilith))\n* documentation:\n  - https://crystal-lang.org/reference/\n* discussion:\n  - https://news.ycombinator.com/from?site=kitlang.org\n* implementation-language: Crystal\n* meta-programming: [Sophisticated macro system](https://crystal-lang.org/reference/1.5/syntax_and_semantics/macros/)\n* backends: LLVM\n* major projects using the language: N/A\n* syntax:\n* highlights:\n  - similar to ruby\n* [pldb](https://pldb.pub/concepts/crystal.html)\n\n```\nputs \"Hello World\"\n```\n\n```\ndef fib(n)\n  a = 0\n  b = 1\n  n.times do\n    a += b\n    a, b = b, a\n  end\n  a\nend\n```\n\n## CSpydr\n\n* main: https://github.com/Spydr06/CSpydr\n* repo: https://github.com/Spydr06/CSpydr\n* documentation: https://github.com/Spydr06/CSpydr/wiki\n* implementation-language: C\n* meta-programming: macros\n* backends: x86_64 GNU Assembly, C (deprecated), LLVM (in progress)\n* major projects using the language: CSpydr's standard library\n* syntax: curly braces, type to the right of identifier with colon inbetween\n* highlights:\n  - namespaces\n  - closures\n  - automatic type inferrence\n  - custom std lib\n* [pldb](https://pldb.pub/concepts/cspydr.html)\n```\nimport \"std.csp\";\n\nfn main(): i32 {\n    std::io::puts(\"Hello, World!\");\n    \u003c- 0;\n}\n```\n\n```\nfn fib(n: i32): i32 {\n    let a = 0;\n    let b = 1;\n    for 0 .. n {\n        a + b |\u003e (a = b, b = $);\n    }\n    \u003c- a;\n}\n```\n\n## D\n\n* main: https://dlang.org/\n* repo: https://github.com/dlang, https://github.com/ldc-developers/ldc, https://gdcproject.org/\n* documentation:\n  - spec https://dlang.org/spec/spec.html\n  - overview https://dlang.org/comparison.html\n* implementation-language: D\n* meta-programming: generics\n* backends: Custom (X86-64), LLVM, gcc\n* major projects using the language: numerous\n* syntax: curly braces, type to the left of identifier\n* highlights:\n  - large language\n  - optional GC\n* [pldb](https://pldb.pub/concepts/d.html)\n\n```\nimport std.stdio;\n\nvoid main() {\n    writeln(\"Hello, World!\");\n}\n```\n\n```\nN/A\n```\n\n## Forth\n\n* main: N/A\n* repo: N/A\n* documentation:\n  - http://www.forth.org/\n* implementation-language: C, assembler,\n* meta-programming: N/A\n* backends: Custom\n* major projects using the language: N/A\n* syntax: unique\n* highlights:\n - concatenative programming style\n - many different flavors\n - very easy to implement\n* [pldb](https://pldb.pub/concepts/forth.html)\n\n```\n: HELLO .\"Hello World \" ;\n\n```\n\n```\n: FIB ( x -- y ) RECURSIVE\n\tDUP 2 \u003e IF DUP  1- RECURSE\n\t\t   SWAP 2- RECURSE +  EXIT\n\t     ENDIF\n\tDROP 1 ;\n```\n\n## Hare\n\n* main: https://harelang.org/\n* repo: https://sr.ht/~sircmpwn/hare/\n* documentation:\n  - https://harelang.org/documentation/\n* implementation-language: C\n* error-handling: via tagged unions\n* meta-programming: ???\n* backends: QBE (restricted to 64bit: X86-64, AArch64)\n* major projects using the language:\n  - https://sr.ht/~sircmpwn/himitsu/\n  - https://sr.ht/~sircmpwn/helios/\n* syntax: curly braces, type to the right of identifier\n* [pldb](https://pldb.pub/concepts/hare.html)\n\n```\nuse fmt;\n\nexport fn main() void = {\n    fmt::println(\"Hello, world!\")!;\n};\n```\n\n```\nN/A\n```\n\n## Hylo \n\n(formerly: Val)\n(Needs more work - pull requests welcome)\n\n* main: https://www.hylo-lang.org\n* repo: https://github.com/hylo-lang/hylo\n* documentation: https://docs.hylo-lang.org/language-tour/\n* discussion: https://news.ycombinator.com/item?id=31788527\n* implementation-language: Swift\n* meta-programming:\n* backends:\n* major projects using the language\n* syntax: curly braces, type to the right of identifier\n* highlights: value semantics\n\n## Jai\n\n* main: N/A\n* repo: N/A\n* documentation:\n  - inofficial https://inductive.no/jai/\n  - inofffical https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md\n  - Jonathan Blow YT channel https://www.youtube.com/user/jblow888/videos\n  - Community Library https://github.com/Jai-Community/Jai-Community-Library\n* implementation-language: C++\n* meta-programming: macros\n* backends: LLVM (?), Custom\n* major projects using the language: N/A\n* syntax: N/A\n* highlights:\n  - compile time execution\n\n```\nN/A\n```\n\n```\nN/A\n```\n\n## Kit\n\n* main: https://www.kitlang.org/\n* repo: https://github.com/kitlang/kit\n* documentation:\n* discussion:\n  - https://news.ycombinator.com/from?site=kitlang.org\n* implementation-language: Haskell\n* meta-programming:\n* backends: C\n* major projects using the language: N/A\n* syntax: curly braces, type to the left of identifier\n* highlights:\n\n```\nfunction main() {\n    printf(\"%s\\n\", \"hello world!\");\n}\n```\n\n```\nN/A\n```\n\n## Lobster\n\n* main: http://aardappel.github.io/lobster/README_FIRST.html\n* repo: https://github.com/aardappel/lobster\n* discussion:\n  - https://news.ycombinator.com/item?id=19567160\n* implementation-language: C(++)\n* meta-programming: generics, comptime evals\n* backends: JIT (libtcc), C++\n* major projects using the language: N/A\n* syntax: python inspired, white space sensitive\n* memory management: compile time reference counting, lifetime analysis, borrow checker, cycle detection at program exit.\n* highlights:\n  - (flow sensitive) type inference\n\n```\nprint \"hello world\"\n```\n\n```\ndef fibonacci(n:int):\n  var a = 0\n  var b = 1\n  for(n):\n    let t = b\n    b += a\n    a = t\n  return a\n```\n\n## Modula-2\n\n* main: https://en.wikipedia.org/wiki/Modula-2\n* repo:\n  - Gnu Modula 2 Frontend (gm2) https://gcc.gnu.org/git/?p=gcc.git;a=shortlog;h=refs/heads/devel/modula-2\n* documentation:\n  - https://www.nongnu.org/gm2/homepage.html\n  - https://freepages.modula2.org/\n  - https://www.modula-2.net/\n* implementation-language: C (gm2)\n* meta-programming: None\n* backends: gcc (gm2)\n* major projects using the language: [Medos-2](https://en.wikipedia.org/wiki/Lilith_(computer)#Operating_system)\n* syntax: begin/end, type to the right of identifier\n* highlights:\n  - Evolution of Pascal\n  - Modules\n  - Co-routines\n* [pldb](https://pldb.pub/concepts/modula-2.html)\n\n```\nMODULE Hello;\nFROM STextIO IMPORT WriteString;\nBEGIN\n  WriteString(\"Hello World!\")\nEND Hello.\n```\n\n```\nPROCEDURE fib(n : INTEGER) : INTEGER;\nVAR\n    a, b, c : INTEGER;\nBEGIN\n    a := 0;\n    b := 1;\n\n    WHILE n \u003e 0 DO\n        c := a + b;\n        a := b;\n        b := c;\n        DEC(n)\n    END;\n\n    RETURN a\nEND fib;\n\n```\n\n## Nim\n\n* main: https://nim-lang.org/\n* repo:\n  - https://github.com/nim-lang/Nim\n* documentation:\n  - https://nim-lang.org/documentation.html\n* discussions:\n  - https://news.ycombinator.com/item?id=24800161\n  - https://news.ycombinator.com/item?id=27165366\n  - https://news.ycombinator.com/item?id=28916172\n* implementation-language: Nim (self hosting)\n* error-handing: exceptions\n* meta-programming: macros manipulating the AST, generics, templates\n* backends: JS, C\n* memory management: ARC\n* major projects using the language:\n  - Nim (self hosting)\n  - https://github.com/dom96/jester\n  - https://github.com/karaxnim/karax\n  - https://github.com/planety/prologue\n* syntax: python inspired, white space sensitive\n* highlights:\n  - c interop\n  - async implemented as library\n  - case insensitve identifiers\n* [pldb](https://pldb.pub/concepts/nim.html)\n\n```\necho \"Hello World\"\n```\n\n```\nproc fib(n: uint64): uint64 =\n    if n \u003c= 1: return n\n    return fib(n - 1) + fib(n - 2)\n```\n\n## Oberon\n\n* main: http://www.projectoberon.com\n* note:\n  - Oberon DOES use garbage collection but it has been used to implememt an influential OS of the same name\n    so we include here.\n  - There are serveral flavors of Oberon (\n      Oberon-2 (1992),\n      [Obereon-7 (2007)](http://people.inf.ethz.ch/wirth/Oberon/Oberon07.Report.pdf),\n      [Active Oberon](http://cas.inf.ethz.ch/projects/a2/repository/raw/trunk/LanguageReport/OberonLanguageReport.pdf),\n      [Oberon+](https://github.com/oberon-lang) )\n* repo:\n  - Oberon+ https://github.com/oberon-lang/\n* documentation:\n  - http://www.projectoberon.com\n* discussion:\n  - https://news.ycombinator.com/item?id=21557057\n* implementation-language: Oberon\n* meta-programming: None\n* backends: Custom\n* major projects using the language: Oberon-OS\n* syntax: begin/end, type to the right of identifier\n* highlights:\n  - evolution of Pascal and Modula-2\n  - deliberate small language\n* [pldb](https://pldb.pub/concepts/oberon.html)\n\n```\nMODULE Hello;\n         IMPORT Oberon, Texts;\n  VAR W: Texts.Writer;\n\n  PROCEDURE World*;\n  BEGIN\n    Texts.WriteString(W, \"Hello World!\");\n    Texts.WriteLn(W);\n    Texts.Append(Oberon.Log, W.buf);\n  END World;\n\nBEGIN\n  Texts.OpenWriter(W);\nEND Hello.\n```\n\n```\nPROCEDURE fib(VAR n: INTEGER) : INTEGER;\n  VAR\n    a, b, c, i : INTEGER;\n  BEGIN\n    a := 0;\n    b := 1;\n    FOR i := 1 TO n DO\n      c := a + b;\n      a := b\n      b := c\n    END;\n    RETURN a;\nEND fib;\n```\n\n## Odin\n\n* main: https://odin-lang.org/\n* repo: https://github.com/odin-lang/Odin\n* documentation:\n  - spec https://odin-lang.org/docs/spec/\n  - https://www.youtube.com/channel/UCUSck1dOH7VKmG4lRW7tZXg\n* discussion:\n  - https://news.ycombinator.com/item?id=22199942\n* implementation-language: C++\n* meta-programming: generics\n* error-handling: \"go-style\" via multiple return values\n* backends: LLVM\n* major projects using the language: [EmberGen](https://jangafx.com/software/embergen/)\n* syntax: curly braces, type to the right of identifier\n* highlights:\n  - implcit context parameter\n* [pldb](https://pldb.pub/concepts/odin.html)\n\n```\npackage main\n\nimport \"core:fmt\"\n\nmain :: proc() {\n  fmt.println(\"Hello World!\")\n}\n\n```\n\n```\nfibonacci :: proc(n: int) -\u003e int {\n  switch {\n  case n \u003c 1:\n    return 0\n  case n == 1:\n    return 1\n  }\n  return fibonacci(n-1) + fibonacci(n-2)\n}\n\n```\n\n## Pascal (FreePascal)\n\n\n* main: https://www.freepascal.org/\n* repo: https://github.com/fpc\n* documentation: https://www.freepascal.org/docs.html\n* note: includes support for Delphi language extensions (classes, etc.)\n* discussion:\n  - https://news.ycombinator.com/from?site=freepascal.org\n* implementation-language: Pascal\n* meta-programming: generics\n* backends: Custom(X86 (32+64), PowerPC (32+64), Sparc, ARM (32+64))\n* major projects using the language\n* syntax: begin/end, type to the right of identifier\n* highlights:\n* [pldb](https://pldb.pub/concepts/pascal.html)\n\n```\nprogram Hello;\nbegin\n  writeln ('Hello, world.');\n  readln;\nend.\n```\n\n```\nfunction fibonacci(const n: integer): integer;\nvar\n  a, b, c, i: integer;\nbegin\n  a := 0;\n  b := 1;\n  for i := 1 to n do\n  begin\n    c := a + b;\n    a := b;\n    b := c;\n  end;\n  fibonacci := a\nend;\n```\n\n## Rust\n\n* main: https://www.rust-lang.org/\n* repo: https://github.com/rust-lang\n* documentation:\n  - https://doc.rust-lang.org/book/\n* implementation-language: Rust\n* meta-programming:\n  - hygienic macros\n  - generics/traits\n  - comptime\n* backends: LLVM\n* major projects using the language: numerous (including large parts of [Firefox](https://www.mozilla.org/en-US/firefox/new/))\n* syntax: curly braces, type to the right of identifier\n* highlights:\n  - memory safety focus (ownership semantics)\n  - immutable by default\n  - bare metal programming via `no_std` environment\n  - steep learning curve\n  - large language\n  - slow compiles\n* [pldb](https://pldb.pub/concepts/rust.html)\n\n```\nfn main() {\n    println!(\"Hello World!\");\n}\n```\n\n```\nfn fib(n: u8) -\u003e u64 {\n  let mut prev: u64 = 0;\n  let mut curr: u64 = 1;\n  for _ in 1..n {\n      let next = prev + curr;\n      prev = curr;\n      curr = next;\n  }\n  curr\n}\n```\n\n## Scopes\n\n* main: https://scopes.readthedocs.io/en/latest/\n* repo: https://hg.sr.ht/~duangle/scopes\n* documentation:\n* discussion:\n  - https://news.ycombinator.com/item?id=19830860\n  - https://news.ycombinator.com/item?id=16603134\n* implementation-language: C++\n* meta-programming:\n* backends: LLVM\n* major projects using the language\n* syntax: indentation sensitive\n* highlights:\n  - on-line compiler\n\n```\nprint \"hello world\"\n\n```\n\n```\nfn fib (n)\n  loop (a b = 0 1)\n    if (b \u003c n)\n      repeat b (a + b)\n    else\n      break b\n\n```\n## Swift\n\n* main: https://swift.org/\n* repo: https://github.com/SwiftLang\n* documentation:\n  - https://www.swift.org/documentation/\n* discussion:\n  - https://forums.swift.org\n* implementation-language: C++ and Swift\n* error-handling: dedicated syntax\n* meta-programming:\n  - generics\n  - compile-time evaluation\n  - macros\n* backends: LLVM, clang, many others\n* major projects using the language: most apps from Apple, server-side frameworks (Vapr, Hummingbird, SwiftNIO), and much more\n* syntax: curly braces, type to the right of identifier and C/C++ like\n* highlights:\n  - open source\n  - large user base (Apple ecosystem + beyond)\n  - ARC (Automatic Reference Counting) for memory management\n  - strong type inference\n  - protocol-oriented programming\n  - cross-platform (Apple platforms, Linux, Windows, embedded)\n  - C, C++, Obj-C and Java interoperability\n\n```swift\nprint(\"Hello, World!\")\n```\n\n```\nfunc fibbonacci(number: Int) -\u003e Int {\n\tvar a = 0\n  \tvar b = 1\n  \tfor _ in 0..\u003cn {\n    \tlet c = a + b\n    \ta = b\n    \tb = c\n  \t}\n  \treturn a\n}\n```\n\n## V\n\n* main: https://vlang.io/\n* repo: https://github.com/vlang\n* documentation:\n  - https://github.com/vlang/v/blob/master/doc/docs.md\n* discussion:\n  - https://news.ycombinator.com/from?site=vlang.io\n* implementation-language: V\n* error-handling: special case of optional types, dedicated syntax\n* meta-programming: generics\n* backends: C, LLVM\n* major projects using the language: N/A\n* syntax: curly braces, type to the right of identifier\n* highlights:\n  - go derived syntax\n  - immutable by default\n  - some confusion around memory-allocators and GC (\"autofree\")\n* [pldb](https://pldb.pub/concepts/v.html)\n```\nfn main() {\n  println('Hello, World!')\n}\n```\n\n```\nfn fn(n int) int {\n  mut a := 0\n  mut b := 1\n  for _ in 0 .. n {\n    c := a + b\n    a = b\n    b = c\n  }\n  return a\n}\n```\n\n## Vale\n\n* main: https://vale.dev/\n* repo: https://github.com/ValeLang/Vale\n* documentation:\n  - introduction https://vale.dev/guide/introduction\n  - https://www.reddit.com/r/vale/\n* discussion:\n  - https://news.ycombinator.com/item?id=16603134\n  - https://news.ycombinator.com/from?site=vale.dev\n* implementation-language: Vale, Scala\n* meta-programming: generics\n* backends: LLVM\n* major projects using the language: N/A\n* syntax: curly braces, type to the right of identifier\n* highlights:\n  - immutable by default\n  - ownership semantics\n\n```\nfn main() export {\n  println(\"Hello world!\");\n}\n```\n\n```\nN/A\n```\n\n## Vox\n\n* main: https://github.com/MrSmith33/vox\n* repo: https://github.com/MrSmith33/vox\n* documentation: N/A\n* discussion: N/A\n* implementation-language: D\n* meta-programming: generics\n* backends: Custom (X86-64)\n* major projects using the language: N/A\n* syntax: curly braces, type to the left of identifier\n* highlights:\n  - AOT + JIT\n\n```\nenum u32 stdin  = 0;\nenum u32 stdout = 1;\nenum u32 stderr = 2;\n\n@extern(syscall, 60)\nvoid exit(i32 error_code);\n\n@extern(syscall, 1)\nvoid sys_write(u32 fd, u8* buf, u64 count);\n\nvoid write(u32 fd, u8[] data) { sys_write(fd, data.ptr, data.length); }\n\nvoid main(u8* lpCmdLine, i32 nShowCmd) {\n\twrite(stdout, msg);\n\texit(0);\n}\n```\n\n```\nN/A\n```\n\n## Zig\n\n* main: https://ziglang.org\n* repo: https://github.com/ziglang/zig\n* documentation:\n  - https://ziglang.org/documentation/master/\n* discussion:\n  - https://news.ycombinator.com/item?id=25797025\n  - https://news.ycombinator.com/item?id=28458713\n  - https://news.ycombinator.com/item?id=27399876\n  - https://news.ycombinator.com/from?site=ziglang.org\n* implementation-language: C++, Zig\n* meta-programming: comptime (including types)\n* error-handling: compiler built-in type, dedicated syntax\n* backends: LLVM, custom\n* major projects using the language: [tigerbeetle](https://github.com/tigerbeetle/tigerbeetle) [bun](https://github.com/oven-sh/bun)\n* syntax: curly braces, type to the right of identifier\n* highlights:\n  - small language\n  - testing built into the language\n  - variables must be declared via `const` (immutable) or `var` (mutable)\n  - no invisible control-flow\n  - defer/errdefer\n* [pldb](https://pldb.pub/concepts/zig.html)\n\n```\nconst std = @import(\"std\");\n\npub fn main() !void {\n    const stdout = std.io.getStdOut().writer();\n    try stdout.print(\"Hello, {s}!\\n\", .{\"world\"});\n}\n\n```\n\n```\nfn fibonacci(n: u32) u32 {\n   var a : u32 = 0;\n   var b : u32 = 1;\n   var i : u32 = 0\n   while (i \u003c n) : (i += 1) {\n      const c : u32 = a + b;\n      a = b;\n      b = c;\n   }\n   return a;\n}\n```\n\n\u003c!--\n## Template\n\n* main:\n* repo:\n* documentation:\n* discussion:\n* implementation-language:\n* meta-programming:\n* backends:\n* major projects using the language\n* syntax:\n* highlights:\n\n```\nHELLO WORLD SNIPPET\n```\n\n```\nFIBONACCI SNIPPET\n```\n--\u003e\n","funding_links":[],"categories":["Uncategorized","Others","Other Lists","Programming Languages"],"sub_categories":["Uncategorized","TeX Lists"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertmuth%2Fawesome-low-level-programming-languages","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobertmuth%2Fawesome-low-level-programming-languages","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobertmuth%2Fawesome-low-level-programming-languages/lists"}