DEVELOPMENT IS CONTINUED. WINDOWS SUPPORT IS IN PROGRESS.
Check out the official documentation here.
Package Extensions
Cpyte supports a package extension system that allows packages to extend the compiler with custom keywords, operators, and compiler hooks. Packages can provide:
- Custom Keywords: Add new language keywords via
package.json - Custom Operators: Define new operators for syntax extensions
- Compiler Hooks: Extend lexing, parsing, semantic analysis, and code generation
- Runtime Extensions: Add runtime code and libraries
Package Structure
Packages are stored in .cpm/modules/package_name/version/ and can include:
package.json- Extension manifest declaring capabilitiesparser_hooks.py- Custom syntax extensionssemantic_hooks.py- Custom type checking and analysis rulescodegen_hooks.py- Custom LLVM IR generationruntime_hooks.py- Runtime code and libraries*.cpy- Main package entry point*.ll- Prebuilt LLVM IR
Example Package
See examples/example_package/ for a complete example package with:
- Custom keywords:
async,await,defer - Custom operator:
~~ - Parser, semantic, codegen, and runtime hooks
Using Extension Packages
import @package_name
# Use custom keywords and syntax from the package
async def my_function() -> Promise:
# Custom syntax
defer cleanup()
return result
Examples
You'll find comprehensive examples in the examples/ directory that cover C imports, header imports, 64-bit support, and standard library usage:
| File | Description |
|---|---|
examples/c_import_example.cpy |
Importing and calling functions from C source files |
examples/example_math.c |
C source with math utility functions for the C import example |
examples/h_import_example.cpy |
Importing functions declared in C header files |
examples/example_functions.h / example_functions.c |
Header and implementation for the H import example |
examples/64bit_example.cpy |
Comprehensive int64/uint64 arithmetic, hex literals, type promotion |
examples/c_library_imports.cpy |
Using built-in C libraries (stdio, stdlib, math, string, time) |
examples/mixed_features.cpy |
Combines C imports, H imports, 64-bit, structs, pointers, linked lists |
examples/mixed_helpers.c / mixed_helpers.h |
Supporting C/header files for the mixed features example |
examples/test.cpy |
macOS event tap example that intercepts keyboard events using ApplicationServices framework |
examples/example_package/ |
Example package demonstrating extension capabilities with custom keywords, operators, and compiler hooks |
You can also import .cpy files — the examples show how to use import "other.cpy" to bring in public functions and structs from other Cpy files.
Run any example with:
cpy examples/<filename>.cpy
Note
Cpyte is experimental software. The compiler is continuously tested with fuzzing and a regression corpus, and every release is published to PyPI and Gitea.
Memory Management
Cpyte uses a concurrent tri-color garbage collector for automatic memory management. Heap-allocated objects (via new) are managed automatically — no manual free needed.
Note: The collector adds a small runtime overhead (~5-10%) compared to manual malloc/free. For performance-critical ecosystem projects or embedded use cases, this trade-off may be significant. The GC is required for safety but will slow down programs that do heavy heap allocation.
Cross-Platform Runtime
The compiler is fully cross-platform. On every target OS (macOS, Linux, Windows) the C runtime (runtime.c), the GC runtime (gc_runtime.c), and any embedded ccode: blocks are compiled from source at JIT/AOT time for the host platform, rather than linking pre-built, OS-specific bitcode. This keeps native helpers and the garbage collector correct on each system:
- Portable threading:
pthreadon POSIX; native Windows threads +CRITICAL_SECTIONon Windows. - Portable stack scanning for the GC that works on macOS, Linux, and Windows.
- A portable sleep/yield helper replaces the POSIX-only
nanosleep.
The compiler auto-discovers a C compiler (clang → cc → gcc) and system linker on the current platform, so cpy, cpy build, and cpy --aot all work without per-OS configuration.
Continuous Integration
GitHub Actions (see .github/workflows/code_quality.yml) builds and runs a curated, cross-platform regression corpus on Ubuntu (x86_64 + arm64), macOS (x86_64 + arm64), and Windows. ci_test.py AOT-compiles each program with the system linker and executes the result to exercise the full pipeline — lexer, parser, semantic analysis, LLVM codegen, the C and GC runtimes, and linking.
Release files for cpyte 4.2.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cpyte-4.2.6.tar.gz | 283.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cpyte-4.2.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 567.0 kB
Release files / cpyte-4.2.6.tar.gz
| Download URL | cpyte-4.2.6.tar.gz |
|---|---|
| Size | 283.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dffe1add128f6ab716dd956fbe98bdd603ad1f234a25a87aa44aaaf8f24a22d2
|
|
BLAKE2b-256 checksum How to use checksums |
913da5ca36f3d821ab3a535e09695203d58fd077576dbf20bf95c4715772c4ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.7
|
Release files / cpyte-4.2.6-py3-none-any.whl
| Download URL | cpyte-4.2.6-py3-none-any.whl |
|---|---|
| Size | 283.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6b38ad962048a1cfeccab1bea1219c7d5279378849ac1d7335e5b6f66e160a0e
|
|
BLAKE2b-256 checksum How to use checksums |
a287fca47008b9644e836e366506aaa55332a01fcb557b4772b6983a71e34ee5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.7
|