Skip to content

kaiserthe13th/gest

Repository files navigation

Gest

GitHub License GitHub last commit

Gest Logo Banner

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.

⏱️ Current Development Status

  • Requirements analysis completed
  • Initial design completed
  • Coding standards decided
  • Lexer completed (ongoing)
  • Parse completed
  • Codegen completed
  • VM completed

👋 Hello World

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.

🚀 Getting started

Requirements: premake, uv

  1. Clone the repo.

    $ git clone https://github.com/kaiserthe13th/gest.git
    Cloning into 'gest'...
    done.
    $ cd gest
  2. Set up the environment using premake.

    premake5 prepare
  3. 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 --test flag on premake to get tests compiled.

🤝 Contributor's Guide

🎨 Code Style

We use code formatting tools for code styling, on top of a small style guide for things that tools can't cover.

🧪 Testing

  1. Build testing build.

    $ premake5 vs2022/gmake2 --test
    $ cd build
    $ ...
  2. Run the test by running the generate gest-test executable.

📜 License Linting

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 xg

⚖️ Licensing

The 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.

See LICENSE, and NOTICE.xg.

About

Gest aims to be a smalltalk-like pure OOP language, but with modern features, and one that has good performance.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors