| Feature | SplitScript | Jai |
|---|---|---|
| Development time | 1 month | 12 years |
| Static strong typing | ✅ | ✅ |
| Local type inference | ✅ | ✅ |
| Whole-program / bidirectional type inference | ✅ Extensive | ◐ Limited/different model |
| Generic functions | ✅ | ✅ |
| Generic data types | ◐ | ✅ |
| Trait/interface-like constraints | ✅ Structural capabilities | ✅ Structural + metaprogramming |
| Records / structs | ✅ record |
✅ struct |
| Enums | ✅ | ✅ |
| Payload enums / ADT-style sum types | ✅ | ◐ Different model |
| Pattern matching | ✅ match |
◐ if ... case |
| Optional values | ✅ built-in T? |
❌ compiler-level |
| Result/fallible values | ✅ built-in T! |
❌ compiler-level |
| First-class functions | ✅ | ✅ |
| Lexical closures | ✅ | ❌ |
| Async functions / values | ✅ async T |
❌ |
await |
✅ | ❌ |
| First-class iterator abstraction | ✅ | ❌, by design |
Custom for iteration |
✅ via Iterable |
✅ via macros |
Generator / yield functions |
❌ | ❌ |
| Arrays | ✅ dynamic + fixed | ✅ dynamic + fixed + views |
| Sets / higher-level collections | ✅ | ✅ via shipped modules |
| Type-directed methods / dot-call APIs | ✅ | ❌ language-level member functions |
| Operator overloading | ✅ | ✅ |
| Macros | ❌ general-purpose user macros | ✅ |
| Arbitrary compile-time execution | ❌ | ✅, major feature |
| Compiler AST accessible to programs | ❌ as a language feature | ✅ |
| Runtime/type reflection | ◐ compiler/tooling semantics | ✅ Type / type_info |
| Standard library | ✅ | ✅ modules/ |
| Build system | ✅ CLI/build/watch | ✅ Very sophisticated compiler metaprogram |
| Syntax highlighting | ✅ bundled VS Code grammar | ❌ no first-party editor highlighter I can find |
| Semantic highlighting | ✅ | ❌ first-party editor UI |
| Language server / LSP | ✅ bundled | ❌ first-party |
| Live diagnostics | ✅ | ❌ without external editor integration |
| Structured diagnostic codes | ✅ SSxxxx |
◐ normal compiler diagnostics |
| Related diagnostic locations | ✅ | ◐ compiler-side |
| Quick fixes / code actions | ✅ | ❌ first-party editor actions |
| Autocomplete | ✅ context-sensitive | ❌ first-party editor completion |
| Signature help | ✅ | ❌ |
| Hover/type info | ✅ | ❌ editor UI |
| Inferred-type inlay hints | ✅ | ❌ |
| Go to definition | ✅ | ❌ first-party |
| Find references | ✅ | ❌ first-party |
| Rename symbol | ✅ semantic rename | ❌ first-party |
| Document symbols / outline | ✅ | ❌ first-party |
| Selection ranges | ✅ | ❌ first-party |
| Formatter | ✅ compiler-owned, CLI + LSP + Format on Save | ❌ no official formatter I can find |
| Built-in language documentation | ✅ compiler-owned | ✅ README, how_to/, examples |
| Searchable symbol docs | ✅ | ❌ first-party |
| “Docs for symbol under cursor” | ✅ | ❌ |
| Generated HTML API/reference site | ✅ | ❌ official generator |
| Compiler semantic-query API | ✅ internally powers the LSP | ✅ very powerful public compiler API |
| AST introspection/manipulation | Internal compiler facility | ✅ first-class metaprogramming feature |
| Compiler message/interception API | Internal service architecture | ✅ |
| Debug/release builds | ✅ | ✅ |
| Source debugger | ✅ | ◐ built-in bytecode debugger + native debug info |
Created
September 1, 2026 19:59
-
-
Save CryZe/d84d4a3585e71d2ad77c187940cd1667 to your computer and use it in GitHub Desktop.
SplitScript vs Jai
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment