aurac
is the official compiler for the Aura programming language, a functional, parallelizable, and multitarget language. The current version targets the C programming language, with plans to extend support to JavaScript and other languages in the future.
- Functional Language: Emphasizes immutability and functional programming paradigms.
- Parallelizable: Designed to run efficiently on multicore processors.
- Multitarget: Initially targets C, with plans for JavaScript and more.
- Type Safety: Ensures operations are validated during compile time.
- Compile-Time and Runtime Operations: Allows compile-time operations to be available at runtime while enforcing proper compile-time treatment.
To get started with aurac
, clone the repository and follow the instructions below to set up and use the compiler.
-
Rust (required to build the compiler)
-
Cargo (required to build the compiler)
-
A
C
compiler (required to compile the generated C code)
-
Clone the repository:
git clone https://github.com/auralangco/aurac.git cd aurac
-
Build the project:
cargo build
Here is a simple example of Aura code from the Aura repository:
Function to add two numbers
fn add(a Int, b Int) -> Int = a + b;
Main function
main {
result = add(5, 7);
println("The result is ${result}");
}
This example demonstrates a basic function definition and usage in Aura, showcasing the language's syntax and functional programming style.
-
Front-End Development: Create a frontend to compile Aura code properly into C.
-
Compiler Wrapper: Develop a wrapper for gcc/clang/mingw to compile the generated C code into an executable.
-
C Interoperability: Facilitate easy interoperability with C native code.
-
Additional Targets: Add support for JavaScript and C for Windows.
Contributions are welcome! Feel free to open an issue or submit a pull request. Here’s how you can help:
-
Fork the repository.
git clone https://github.com/auralangco/aurac.git
-
Create a new branch.
git checkout -b feature-branch
-
Make your changes and commit them.
git commit -am 'Add new feature'
-
Push to the branch.
git push origin feature-branch
-
Create a new Pull Request.
- You can also contribute by opening an issue to report a bug or request a new feature.
This project is licensed under the Apache-2.0 License
. See the LICENSE file for more details.