# JunoLang
<p align="center">
<img src="./imgs/logo.png" alt="Juno Logo" width="500"/>
</p>
A modern, statically typed systems programming language built on LLVM.
> **Status:** Early development. Expect breaking changes.
## Features
* LLVM-based compiler
* Written in Rust
* Native module system
* Strong static type system
* Native code generation
## Example
```juno
import ./othermodule.juno;
fn main() -> i32 {
printf("Hello, World!\n");
othermodule.say_hello("hi");
return 0;
}
```
## Installing
Install `junocc`
```bash
cargo install junocc
```
## Building
Clone the repository:
```bash
git clone https://github.com/L0rdCycl0p/JunoLang
cd JunoLang
```
Build the compiler:
```bash
cargo build --release
```
Run:
```bash
cargo run -- examples/hello.juno
```
## Using `junocc`
### Compiling
```bash
junocc <files> -o [output]
```
example:
```bash
junocc examples/helloworld.juno examples/library.juno -o program
```
## Roadmap
* [x] Lexer
* [x] Parser
* [x] AST
* [x] Semantic analysis
* [x] LLVM code generation
* [x] Basic optimizations
* [ ] Structs
* [ ] Enums
* [ ] Generics
* [ ] Trait system
* [ ] Standard library
* [ ] Package manager
* [ ] Language server (LSP)
## Philosophy
Juno aims to be a language that feels simple to read while still providing the power expected from a systems programming language.
The project embraces:
* Explicitness over magic
* Fast compilation
* LLVM as the backend
* Compile-time assets
* Clean and readable syntax
## License
This project is licensed under the MIT License.