Gest aims to be a smalltalk-like pure OOP language, but with modern features, and one that has good performance. View the design for more details.
- Requirements analysis completed
- Initial design completed
- Coding standards decided
- Lexer completed (ongoing)
- Parse completed
- Codegen completed
- VM completed
Module import: '@gest/common', for: #{#identity => #id}.
args := Env args asArray.
name := args index?: 1.
"If there is a name, use that name, if not, default to World."
name := name nil? ifFalse: id, else: 'World'.
Module
export: [ Io printLn: 'Hello ' ++ name ++ '!'. ],
as: #main.-
Clone the repo.
$ git clone https://github.com/kaiserthe13th/gest.git Cloning into 'gest'... done. $ cd gest
-
Set up the environment using premake.
premake5 prepare -
You can play around and compile with premake.
$ premake5 vs2022/gmake2 etc. $ cd build $ msbuild /p:Configuration=StaticDebug ... or $ make config=staticdebug_bits64
[!TIP] Use the
--testflag on premake to get tests compiled.
We use code formatting tools for code styling, on top of a small style guide for things that tools can't cover.
- For C, use clang-format.
- For Python, use ruff.
-
Build testing build.
$ premake5 vs2022/gmake2 --test $ cd build $ ...
-
Run the test by running the generate gest-test executable.
We use a tool called xg for checking licensing of our files. Please use the tool and ensure all files are licensed.
You can easily use it via premake with:
$ premake5 xgThe project uses the Apache 2.0 License with the LLVM Exception for most of its files. However, some files use the Unicode license for their data.
