11 comments

  • metalliqaz 4 days ago ago

    This is pretty cool, I like to see this kind of project coming to Zig. Zig's compile-time language features make DbC a natural fit.

    I am not yet proficient enough in Zig to be able to evaluate how well the syntax fits into idiomatic Zig.

    Good work.

    • habedi0 4 days ago ago

      Thanks.

      I'm new to Zig myself and created this library because I had trouble verifying the correctness of the code I wrote for a set of complex data structures in another larger Zig project (this one: https://github.com/habedi/ordered). I'm currently experimenting with how to use DbC in Zig, which led to the creation of this library.

  • skyzouwdev 3 days ago ago

    Nice! Always thought DbC was underused outside of languages like Eiffel. Cool to see it brought to Zig with zero-cost checks in ReleaseFast — that’s a solid balance between safety and performance.

  • skavi 3 days ago ago

    Why are the checks included in ReleaseSmall?

    • habedi0 3 days ago ago

      I created this library to help me verify the correctness of my Zig code in another project. However, I wanted the option to strip the checks when the code becomes more mature, for efficiency. For efficiency, I mainly care about speed, which is why checks are only compiled out in `ReleaseFast`.

  • Defletter 3 days ago ago

    Another project burdened by Andrew Kelley's weird hate-boner for function literals.

        (struct { fn run }).run
    
    How ridiculous that this is required to do something so simple.