https://github.com/occultlang/occult
An enigmatic systems programming language.
https://github.com/occultlang/occult
compiler-design compilers cpp jit jit-compilation languages occult occultlang programming programming-language programming-language-development programming-languages
Last synced: about 2 hours ago
JSON representation
An enigmatic systems programming language.
- Host: GitHub
- URL: https://github.com/occultlang/occult
- Owner: occultlang
- License: apache-2.0
- Created: 2023-07-22T02:26:13.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2026-02-21T06:46:41.000Z (2 days ago)
- Last Synced: 2026-02-21T13:37:37.136Z (1 day ago)
- Topics: compiler-design, compilers, cpp, jit, jit-compilation, languages, occult, occultlang, programming, programming-language, programming-language-development, programming-languages
- Language: C++
- Homepage: https://occultlang.org
- Size: 5.56 MB
- Stars: 40
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
The Occult Programming Language
An enigmatic systems programming language.
[](https://occultlang.org/)
[](https://github.com/occultlang/occult/blob/main/LICENSE.md)
[](https://github.com/occultlang/occult/stargazers)
[](https://github.com/occultlang/occult/network/members)
> [!IMPORTANT]
> ### There's a more in-depth guide on getting started at [https://occultlang.org/getting-started](https://occultlang.org/getting-started)
> ### Language specification is at [https://occultlang.org/language-specifications](https://occultlang.org/language-specifications)
### What is Occult?
Occult is a systems programming language, meant to give the user the full control and power of a C-like language, but with a modern syntax with modern features, making it easy to write, read and learn.
### What Occult is capable of?
```
fn write(i64, string, i64) shellcode i64 { 0x55 0x48 0x89 0xe5 0x48 0xc7 0xc0 0x01 0x00 0x00 0x00 0x0f 0x05 0x48 0x31 0xc0 0x48 0x89 0xec 0x5d 0xc3 }
fn strlen(string) shellcode i64 { 0x55 0x48 0x89 0xe5 0x48 0x31 0xc0 0x80 0x3c 0x07 0x00 0x74 0x05 0x48 0xff 0xc0 0xeb 0xf5 0x48 0x89 0xec 0x5d 0xc3 }
fn puts(string s) {
write(1, s, strlen(s));
}
fn main() {
puts("1\n");
puts("2\n");
puts("3\n");
puts("4\n");
puts("5\n");
}
```
This is an example of using raw x86_64 shellcode with the Linux write syscall to print out 1 to 5!
_____________________________________________________________________________
### Building Occult
> [!NOTE]
> **The highest C++ standard that Occult should use is C++23**
> Also, the only architecture Occult supports is `amd64` as of now, obviously this will change!
### Building for Linux / MacOS
```bash
git clone https://github.com/occultlang/occult.git && cd occult
chmod +x build.sh
./build.sh
```
### Building for Visual Studio on Windows (You must install LLVM with clang inside Visual Studio Installer)
```bash
git clone https://github.com/occultlang/occult.git && cd occult
cmake -G ""
# i.e "Visual Studio 18 2026" for V.S 2026
# running cmake -G should just give you options to choose from
```
Change the C++ Language Standard to the latest version

Change the Platform Toolset to LLVM(clang-cl) (Or else Occult **WILL NOT** compile on Windows because of MSVC...)

Next, go into C/C++ -> Command Line, and then remove all the contents of the "Additional Options" field

Afterwards, you should be good to go
_____________________________________________________________________________
### Roadmap
- Varadaric Arguments (v2.2.1-alpha)
- Generics
- Foreach implementation
- RAII
- New Intermediate Representation (SSA) for optimization pass
- RISCV Support
- ARM64 Support
_____________________________________________________________________________
### [Credits](https://github.com/occultlang/occult/blob/main/CREDITS.md)