Skip to main content

Check out the official documentation here.

Note: Version 1.6.1 had a critical division by zero error that wasn't caught.

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:

python source/mainpie.py --jit examples/<filename>.cpy

Note

Cpyte is experimental software. The compiler is continuously tested with fuzzing, and we're still discovering and fixing correctness bugs. While many programs compile and run correctly, I can't make any guarantees about correctness or stability.

If you decide to use Cpyte, always use the latest version — older versions have bugs that are pretty easy to run into.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cpyte-2.0.2.tar.gz (84.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cpyte-2.0.2-py3-none-any.whl (86.3 kB view details)

Uploaded Python 3

File details

Details for the file cpyte-2.0.2.tar.gz.

File metadata

  • Download URL: cpyte-2.0.2.tar.gz
  • Upload date:
  • Size: 84.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for cpyte-2.0.2.tar.gz
Algorithm Hash digest
SHA256 9ca2a49d742ae84fbd0f068b95c3fbfde2f1280c317a5debed47037ef65d7538
MD5 992f496d6d79b7fa4b56865fda0901fa
BLAKE2b-256 6e0523f3db173666f5889e98cb75b7b1cbb5763f96d8fd8d23a3c14c16ce7d9f

See more details on using hashes here.

File details

Details for the file cpyte-2.0.2-py3-none-any.whl.

File metadata

  • Download URL: cpyte-2.0.2-py3-none-any.whl
  • Upload date:
  • Size: 86.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for cpyte-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 aba843de4d3dfdb2a67804a22c4a54b53ed702a3072ca9c4846b1bbd5c96c94f
MD5 4221d426c5de9bbdac71cb3adbe30eaf
BLAKE2b-256 cad29865b4b0c0cf0bcc7ad67349e78d7323b3e213face2940739141fbf0e891

See more details on using hashes here.

Release history Release notifications | RSS feed

4.2.2

2 files

4.2.1

1 file

4.2.0

1 file

4.1.0

2 files

4.0.0

2 files

3.4.0

2 files

3.3.4

2 files

3.3.3

2 files

3.3.2

2 files

3.3.1

2 files

3.3.0

2 files

3.2.0

2 files

3.1.0

2 files

3.0.0

2 files

2.7.3

2 files

2.7.2

2 files

2.7.1

2 files

2.7.0

2 files

2.6.0

2 files

2.5.1

2 files

2.5.0

2 files

2.4.1

2 files

2.4.0

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

2 files

2.1.0

2 files

This release

2.0.2 This release

2 files

2.0.1

2 files

2.0.0

2 files

1.8.7

2 files

1.8.6

2 files

1.8.5

2 files

1.8.4

2 files

1.8.3

2 files

1.8.2

2 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