Skip to main content

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 capabilities
  • parser_hooks.py - Custom syntax extensions
  • semantic_hooks.py - Custom type checking and analysis rules
  • codegen_hooks.py - Custom LLVM IR generation
  • runtime_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: pthread on POSIX; native Windows threads + CRITICAL_SECTION on 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.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cpyte 4.2.7
File Size Uploaded
cpyte-4.2.7.tar.gz 297.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cpyte 4.2.7
File Interpreter ABI Platform
cpyte-4.2.7-py3-none-any.whl Python 3 none any Details

Total release size: 593.1 kB

Release files / cpyte-4.2.7.tar.gz

Download URL cpyte-4.2.7.tar.gz
Size 297.2 kB
Tags Source
SHA-256 checksum
How to use checksums
5bbdb1f8558de8a01f964052e12937bd60a9035a96ea9cb8ff2e1cd5cf7edfc6
BLAKE2b-256 checksum
How to use checksums
6928e302ef995e42c72b1e3c1033c95946383e784a2f97ff3586737a474d2437
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.7-py3-none-any.whl

Download URL cpyte-4.2.7-py3-none-any.whl
Size 295.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb5d8d318f1aeb024680585958fd1c798a92a8cfc352aacab755397a79b111f7
BLAKE2b-256 checksum
How to use checksums
3328c0d2c9aad90f3c6257e93b9051c4ff26f7744d1f0b3b2d5d1b0322e284c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.7

Release history Release notifications | RSS feed

4.3.0

2 release files

This release

4.2.7 This release

2 release files

4.2.6

2 release files

4.2.5

2 release files

4.2.4

2 release files

4.2.3

2 release files

4.2.2

2 release files

4.2.1

1 release file

4.2.0

1 release file

4.1.0

2 release files

4.0.0

2 release files

3.4.0

2 release files

3.3.4

2 release files

3.3.3

2 release files

3.3.2

2 release files

3.3.1

2 release files

3.3.0

2 release files

3.2.0

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.7.3

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.0

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.8.7

2 release files

1.8.6

2 release files

1.8.5

2 release files

1.8.4

2 release files

1.8.3

2 release files

1.8.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page