I am the creator of Jac, a Python-like synechic programming language with AOT native backend among other backends. Now that Mojo is open source, I can fully understand it as a serious language. I, along with my best friend GPT, sat down to do a comparison and brainstorm how Jac should evolve (as I imagine C++/rust and Zig needs to do the same based on the strong contributions of Mojo).
The result is surprising in both directions. Two of the features Mojo is well known for already exist in Jac: a gradual borrow checker (more than 4k lines with use-after-move, borrow conflicts, region escape, with ARC as the default so plain Python-style code still runs unannotated), and parallel loops whose data-race freedom is checked statically at compile time. That last one is still a Phase 2 roadmap item for Mojo.
I have to acknowledge the other direction too though. Mojo is ahead on four concrete things: value/const generic parameters, first-class SIMD, native trait bounds, and GPU codegen. This issue lays out a potential plan for each, plus non-goals. We are not adopting MLIR, and ownership stays opt-in "gradual" rather than mandatory as this is one of the key innovations in Jac.
I would love to hear feedback on this analysis and potential roadmap, especially from anyone who has taken a look at the KGEN Elaborator sources.
marsninja•21m ago
The result is surprising in both directions. Two of the features Mojo is well known for already exist in Jac: a gradual borrow checker (more than 4k lines with use-after-move, borrow conflicts, region escape, with ARC as the default so plain Python-style code still runs unannotated), and parallel loops whose data-race freedom is checked statically at compile time. That last one is still a Phase 2 roadmap item for Mojo.
I have to acknowledge the other direction too though. Mojo is ahead on four concrete things: value/const generic parameters, first-class SIMD, native trait bounds, and GPU codegen. This issue lays out a potential plan for each, plus non-goals. We are not adopting MLIR, and ownership stays opt-in "gradual" rather than mandatory as this is one of the key innovations in Jac.
I would love to hear feedback on this analysis and potential roadmap, especially from anyone who has taken a look at the KGEN Elaborator sources.