NG is a static-typed, multiple paradigm programming language designed for efficiency and productivity.
- Minimum mutability required
- Minimum runtime overhead
- Let others rewrite everything and bind them
- Direct hardware mapping
- C++ Compiler: A C++23 compatible compiler (e.g., GCC, Clang, MSVC).
- CMake: Version 4.0 or higher.
- Build Tool: Make or Ninja.
-
Clone the repository:
git clone https://github.com/ng-lang/ng.git cd ng
-
Create a build directory:
mkdir build cd build
-
Configure the project with CMake:
cmake -GNinja ..
-
Build the project:
ninja
After building the project, you can use the ngi
interpreter to run NG scripts.
./ngi ../example/01.id.ng
- Robust error handling (e.g.,
try/catch
or aResult
type) - Pattern matching
- Closures/Lambdas
- Generics
- Enums
- Compile to Native
- Naive Type Checking
- Bytecode Based Runtime - ORGASM (Organized Assembly)
- Comprehensive file I/O module
- Advanced string manipulation module (e.g., regex)
- Rich collections library (e.g., hashmaps, sets)
- Process management module
- Networking module (e.g., HTTP)
- Date and time module
- Package manager
- REPL (Read-Eval-Print Loop)
- Automatic code formatter
- Linter
- Debugger
We welcome contributions and feedback from the community! Here are a few ways to get involved:
- Discussions: For general discussions, questions, and ideas, please use the GitHub Discussions.
- Issue Tracker: For bug reports and feature requests, please use the GitHub Issues.
- Pull Requests: For contributions, please use GitHub Pull Requests.
We welcome contributions from everyone. Please read our Contribution Guide to get started.