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.