This directory contains all Jet-related code, excluding third-party projects.
The codebase is divided into two categories:
- main projects (stored in this folder)
- component libraries (stored in the
Components
folder)
Every project that is directly related to the Jet language is a main project. The second group consists of libraries that are used by the main projects. We are aware that as the language evolves, the number of sub-projects will increase significantly, so we decided to have the most important ones separated from the rest.
It is important to clarify the difference between the Core
and Foundation
:
The Core
is a common library used by other main projects that provide language-related
functionality (such as module system, type system, etc.).
The Foundation
is a component library with the most basic functionality that is used
across the whole codebase, such as:
- Standard library aliases (e.g.,
u8
,i32
,usize
,String
,Opt
, etc.) Result
type
Here is a list of all projects in the codebase:
Project | Namespace | Brief description |
---|---|---|
Libraries | ||
Parser | jet::parser::* |
Responsible for providing a grammar and generating AST. |
Core | jet::core::* |
Provides common, language-related functionality such as module system, type system, etc. |
Compiler | jet::compiler::* |
The base library that is used by the CompilerApp (and possibly other projects in the future) |
VM (TBD) | jet::vm::* |
(FUTURE PLAN) Implements an on-the-fly execution of the Jet code, improving compile-time capabilities of the language and providing a way to run Jet code on any platform. |
Applications | ||
CompilerApp | - |
The app project that creates the jetc executable. |
VMApp (TBD) | - |
(FUTURE PLAN)
The app project that creates the rigvm executable.
|
Other | ||
Test | - |
Tests the behavior of various components of the codebase. |
Project | Namespace | Brief description |
---|---|---|
Foundation | jet::comp::foundation::* |
The most basic functionality that is used across the whole codebase, such as
standard library aliases, Result type, etc.
|
PEG | jet::comp::peg::* |
A custom implementation of a PEG parser generator used by the Parser project. |
Format | jet::comp::fmt::* |
Formatting library that exposes fmtlib content as a module. |