TSol Compiler - Transpiles Sol language to C
Project description
tsolc
TSolC - The C transpiler for the Sol language.
Sol — Embrace modularity, ease of use, and speed.
TSol is a lightweight scripting language that compiles to C. It gives you the raw performance of C with a cleaner, more modern syntax — and a module system that actually makes sense.
Why Sol?
C is fast. C is everywhere. But C is also verbose, error-prone, and lacks a sane way to organize code across files.
Sol fixes that.
- Modular by design —
get("path/to/module.sol")imports just work, including nested subdirectories - Familiar syntax — C-style types and control flow, minus the footguns
- Zero-cost abstraction — transpiles to clean C, then compiles with clang or gcc
- No build system headaches — one command compiles and runs
Install
pip install tsolc
Requires Python 3.10+ and a C compiler (clang, gcc, or cc).
Quick Start
hello.sol
main() out int {
string msg -> "Hello, World!";
printf("%s\n", msg);
return 0;
}
tsolc hello.sol --run
Language Features
Types
| Sol | C |
|---|---|
int, float, double, char, bool |
Same |
string |
char* |
int8–int64, uint8–uint64 |
int8_t–int64_t, uint8_t–uint64_t |
int[], float[], ... |
Pointer + compound literal |
Variables & Assignment
int count -> 42;
float pi -> 3.14;
string name -> "Sol";
int[] nums -> [1, 2, 3, 4, 5];
Assignment uses -> to avoid confusion with ==:
count -> count + 1;
Functions
pub square(int n) out int {
return n * n;
}
pubmarks the function as public (importable from other files)out typespecifies the return type; omit forvoid
Imports
get("std/math.sol");
get("utils/helpers.sol");
Paths are relative to the importing file. Subdirectories work naturally:
get("std/io/file.sol");
get("../shared/types.sol");
Imports are deduplicated automatically — no header guards needed.
Control Flow
if (x > 0) {
printf("positive\n");
} elseif (x < 0) {
printf("negative\n");
} else {
printf("zero\n");
} end
for (int i -> 0; i < 10; i++) {
printf("%d\n", i);
} end
Structs
struct Point {
float x;
float y;
}
Project Structure Example
myproject/
├── main.sol
├── std/
│ └── math.sol
└── utils/
└── string.sol
main.sol
get("std/math.sol");
get("utils/string.sol");
main() out int {
int result -> pow(2, 10);
printf("2^10 = %d\n", result);
return 0;
}
CLI Usage
tsolc file.sol # Compile only
tsolc file.sol --run # Compile and run
tsolc file.sol --keep-c # Keep the generated .c file
How It Works
- Parse — Sol source is tokenized and parsed into an AST
- Resolve —
get()imports are recursively resolved and merged - Generate — Clean C11 code is emitted (structs first, then forward declarations, then definitions)
- Compile — clang/gcc compiles the C to a native executable
- Run — The binary is executed (with
./prefix and proper permissions on Unix)
License
MIT — see LICENSE for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tsolc-0.1.5.tar.gz.
File metadata
- Download URL: tsolc-0.1.5.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
793baaddc27e058f625e7f0439a2a87c5f2557d80c7bb0ddc30d2b0b176f0412
|
|
| MD5 |
5b8ed5dd6804d6d5cd5df5dc43c104a1
|
|
| BLAKE2b-256 |
b112e83a9b5ad3df592107b30d20d42e01fa01345b958f583fe9d06d74a03a8b
|
File details
Details for the file tsolc-0.1.5-py3-none-any.whl.
File metadata
- Download URL: tsolc-0.1.5-py3-none-any.whl
- Upload date:
- Size: 12.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
10908468c39a3e1b8a4202ad6236def683d7983c693b7093bb204a43a1a06922
|
|
| MD5 |
58b503951899ecb1ba1d58249791f927
|
|
| BLAKE2b-256 |
176eb25133c5a5dc208a9974aa9b2226322e5ae7eee6b66c7c5d05e6fbd2d980
|