3 unstable releases
new 0.5.0 | Jan 17, 2025 |
---|---|
0.4.0 | Jan 9, 2025 |
0.4.0-beta | Jan 7, 2025 |
#91 in Programming languages
244 downloads per month
210KB
5K
SLoC
Atlas77
Functional Programming language with a strong interop with Rust,
designed to be a functional scripting language.
Explore the docs »
Playground (inexistant)
·
Report Bug
·
Request Feature
Table of Contents
About The Project
Atlas77 is an experimental statically typed programming language with a strong interop with Rust. It will run on a custom VM. I'll implement a JIT compiler using Cranelift later on. (There will be an AOT compiler too)
Getting Started
Prerequisites
- Rust Compiler
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Or directly from their website: Rust
Installation
- Install it from Cargo
cargo install atlas_77
- Use it as a CLI
atlas_77 --help
- Enjoy!
Usage
Fibonacci Example
import "std/io"
func fib(n: i64) -> i64 {
if n <= 1 {
return n;
}
return fib(n - 1) + fib(n - 2);
}
func main() -> i64 {
let n: i64 = 10;
print_int(fib(n));
}
For more examples, please refer to the examples folder
Roadmap
v0.3 "Foundation"
Deprecated, if you wanna know more about the v0.3.x, check the releases page.
v0.4 "Keystone"
Deprecated, if you wanna know more about the v0.4, check the releases page.
v0.5 Phoenix Release Timeline
The v0.5 is a complete rewrite of Atlas77, it aligns better with the end goal of the language (see Goal of the language).
NB: up until the v1.0 the language will always be in alpha, tho I'll try to make every release as stable as possible. I hope I can release the v0.5 this month
Feature | Expected Version | Description | Status |
---|---|---|---|
Functions | v0.5 | Define and call functions | ✅ |
Variables | v0.5 | Immutable (const ) and mutable (let ) variables |
✅ |
Basic std Library |
v0.5 | Core utilities for time , file , io , math , string , list |
✅ |
Import | v0.5 | Limited to standard library imports for now | ✅ |
Control Flow | v0.5 | if/else statements for conditional logic, while loops for iteration |
✅ |
Match Expressions | v0.5.1 | Pattern matching | 💭 |
Structs | v0.5.1 | User-defined types with named fields | 💭 |
Unions | v0.5.1 | Low-level data structures allowing overlapping memory layouts | 💤 |
Enums | v0.5.1 | Enumerations with optional associated data for flexible value sets | 💤 |
Lambdas & Closures | v0.5.2 | Inline, anonymous functions with captured variables | 💭 |
Classes | v0.5.2 | Object-oriented programming support | 💭 |
Traits | v0.5.2 | Interfaces for defining shared behavior | 💤 |
Pointers | v0.5.2 | Basic pointer manipulation for low-level programming | 💭 |
Memory Management | v0.5.2 | Simple memory management | 💭 |
Imports | v0.5.2 | Importing code from other files | 💤 |
Generics | v0.5.x | Type parameters for writing reusable code | 💤 |
Standard Library | v0.5.x | A comprehensive standard library | 💤 |
Package Manager | unknown | A package manager for sharing code | 💤 |
Language Server Protocol | unknown | Editor support for code completion, diagnostics, and more | 💤 |
Cranelift JIT | unknown | Just-in-time compilation for faster execution | 💤 |
Legend
- 💤: Not implemented
- 💭: Being thought of
- 🔧: Being implemented
- ✅: Working
Stability and Refinement
As the language is still in alpha (not 1.0 yet), I won't make "alpha"/"beta" build, it doesn't really make sense.
The beta phase (aka after 0.5.2 and beyond) will focus on stabilizing the language. All features will be finalized, tested extensively, and optimized for real-world use. This phase will serve as a release candidate.
See the open issues for a full list of proposed features (and known issues).
Goal of the language
- Boostrapping the compiler
- Making a simple ECS
- Making a simple Game Engine with Vulkan bindings (maybe OpenGL too)
At least it should be possible to make one with Atlas77
- Using BlueEngine from the language (even if it's not really most efficient)
- Ahead of time compilation using cranelift
- Making the package manager directly in Atlas77
Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Top contributors:
Made with contrib.rocks.
License
Distributed under the MIT License. See LICENSE.txt
for more information.
Contact
Your Name - @Gipson62_8015 - J.H.Gipson62@gmail.com
Project Link: https://github.com/atlas77-lang/Atlas77
Dependencies
~7–13MB
~165K SLoC