Skip to content

spiraldb/ziggy-pydust

Folders and files

NameName
Last commit message
Last commit date
Nov 3, 2023
Oct 19, 2023
Oct 31, 2023
Nov 9, 2023
Nov 21, 2023
Oct 31, 2023
Sep 16, 2023
Aug 31, 2023
Nov 3, 2023
Oct 30, 2023
Oct 10, 2023
Nov 19, 2023
Sep 8, 2023
Nov 3, 2023
Sep 12, 2023

Repository files navigation

Ziggy Pydust

A framework for writing and packaging native Python extension modules written in Zig.

Actions Package version Python version License


Documentation: https://pydust.fulcrum.so/latest

API: https://pydust.fulcrum.so/latest/zig

Source Code: https://github.com/fulcrum-so/ziggy-pydust

Template: https://github.com/fulcrum-so/ziggy-pydust-template


Ziggy Pydust is a framework for writing and packaging native Python extension modules written in Zig.

  • Package Python extension modules written in Zig.
  • Pytest plugin to discover and run Zig tests.
  • Comptime argument wrapping / unwrapping for interop with native Zig types.
const py = @import("pydust");

pub fn fibonacci(args: struct { n: u64 }) u64 {
    if (args.n < 2) return args.n;

    var sum: u64 = 0;
    var last: u64 = 0;
    var curr: u64 = 1;
    for (1..args.n) {
        sum = last + curr;
        last = curr;
        curr = sum;
    }
    return sum;
}

comptime {
    py.rootmodule(@This());
}

Compatibility

Pydust supports:

Please reach out if you're interested in helping us to expand compatibility.

Getting Started

Pydust docs can be found here. Zig documentation (beta) can be found here.

There is also a template repository including Poetry build, Pytest and publishing from Github Actions.

Contributing

We welcome contributions! Pydust is in its early stages so there is lots of low hanging fruit when it comes to contributions.

  • Assist other Pydust users with GitHub issues or discussions.
  • Suggest or implement features, fix bugs, fix performance issues.
  • Improve our documentation.
  • Write articles or other content demonstrating how you have used Pydust.

License

Pydust is released under the Apache-2.0 license.