Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/qupa-project/uniview-lang
View once immutability enabling the safeties of immutable code, while enjoying near procedural performance
https://github.com/qupa-project/uniview-lang
compiler language llvm
Last synced: 24 days ago
JSON representation
View once immutability enabling the safeties of immutable code, while enjoying near procedural performance
- Host: GitHub
- URL: https://github.com/qupa-project/uniview-lang
- Owner: qupa-project
- License: mit
- Created: 2020-12-18T03:18:15.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-06-04T04:46:49.000Z (over 1 year ago)
- Last Synced: 2024-09-30T03:41:05.651Z (about 1 month ago)
- Topics: compiler, language, llvm
- Language: JavaScript
- Homepage: https://uniview.qupa.org
- Size: 846 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: changelog.md
- Contributing: contributing.md
- License: LICENSE
- Code of conduct: code-of-conduct.md
Awesome Lists containing this project
README
# Uniview-lang
> View once immutability enabling the safeties of immutable code, while enjoying near procedural performance
The core goal of this language is to implement compile time determined memory managed applications without developers needing to consider memory management. No pointers, no life times, just code.
When any non-primative value is viewed it can no longer be used, this extends to structure attributes. However there is no concept of null or undefined being a value. Undefined is a compile time state and that's it.
```uv
fn main(): int {
let person = Blank#[Person]();
print(person.name); // name has now been consumed
consume(person); // error cannot compose person due to undefined name
}
```You can also find a few examples in `test/pre-alpha/`.
## Compiler Arguments
| Argument | Use |
| :- | :- |
| `-o {filename}` | The destination file name for the LLVM IR and binary output |
| `-s` | The compilation level to perform `llvm`, `assembly` |
| `--execute` | Executes the binary output after successful compilation |
| `--version` | Prints the version of the compiler |
| `--verifyOnly` | Compiles to LLVM, but does not store the results or compiles further |
| `--compileOnly` | Compiles to binary, but does not execute the result |
| `--opt {num}` | Runs optimisation passes over the output (any number between 0-3 inclusive) |