/Nal

Nal - Your daily programming language

Primary LanguageRustOtherNOASSERTION

Nal

Build Status codecov

Nal - Your daily programming language

Note: This repository is under heavy development. Do not use this in any serious project.

Goals

  • Asynchronous without hassle
  • Type safe without verbosity
  • Structural typing FTW

// TODO:

Nal v0.4 should have:

  • Simple function that accepts source code and execute it
  • Web playground that can execute Nal code and show its output

Nal v0.4 should not have:

  • Api stability
  • Any syntactic sugar
  • Static type checker
  • User-friendly documentations

Components in Nal v0.4

  • nal_ast: Abstract Syntax Tree structure for source code.
  • nal_ir: Intermediate Representation as a desugared control flow semantics.
  • nalc_parser: Parser that produces AST from source code.
  • nalc_atoi: Convert ast to ir.
  • nali: IR interpreter with dynamic type check.

Planned features

  • Algebraic data types
  • Type notation and static type checker with inference
  • Compile to binary with LLVM
  • Compile-time reflection
  • Isomorphic metaprogramming
  • Coroutine/Generator
  • Fiber based goroutine-like runtime
  • Async, lock-free IO with future API
  • Safe Rust FFI
  • Runtime code replacement

License

This repository is dual-licensed under the MIT license and Apache license 2.0 at your option. By contributing to Nal you agree that your contributions will be licensed under these two licenses.