Koru logo Koru
Learn Platform Status Blog
The Koru Book

524/615 tests passing

CORE LANGUAGE / BASIC SYNTAX 5/5
  • ✓ 000 hello world koru
  • ✓ 001 hello world
  • ✓ 002 simple event
  • ✓ 003 event multiline shape
  • ✓ 020 eol comments
CORE LANGUAGE / EVENTS FLOWS 12/12
  • ✓ 001 simple flow
  • ✓ 002 multiple flows
  • ✓ 004 void event
  • ✓ 005 void event chained
  • ✓ 006 void pipeline sequence
  • ✓ 007 binding annotations
  • ✓ 008 wildcard branch payload
  • ✓ 010 expression with brace
  • ✓ 011 reject tilde inside flow
  • ✓ 012 reject pub proc
  • ✓ 013 reject function call in branch constructor
  • ✓ 014 pure subflow impl
CORE LANGUAGE / TYPES VALUES 26/26
  • ✓ 010 array literal simple
  • ✓ 011 array literal bindings
  • ✓ 012 struct literal inline
  • ✓ 013 array of structs
  • ✓ 014 array literal invalid target
  • ✓ 016 array literal subflow impl
  • ✓ 100 string type
  • ✓ 101 int type
  • ✓ 102 float type
  • ✓ 103 bool type
  • ✓ 110 generic struct basic
  • ✓ 111 generic struct two params
  • ✓ 112 generic struct nested
  • ✓ 113 generic struct with primitives
  • ✓ 120 instantiate basic
  • ✓ 121 instantiate with named type
  • ✓ 122 instantiate two params
  • ✓ 123 instantiate nested generic
  • ✓ 130 nominal string mismatch
  • ✓ 131 nominal int mismatch
  • ✓ 132 generic type mismatch
  • ✓ 133 instantiation param mismatch
  • ✓ 140 type with const
  • ✓ 141 type with capture
  • ✓ 142 nominal in pipeline
  • ✓ host type injection
CORE LANGUAGE / CONTROL FLOW 28/29
  • ✓ multiple branches
  • ✓ binding scopes
  • ✓ shadowing behavior
  • ○ shadowing rejected
  • ✓ labels and jumps
  • ✓ zig keyword escaping
  • ✓ continuation label
  • ✓ nested labels
  • ✓ label scope errors
  • ✓ arbitrary label jumps
  • ✓ label scope isolation
  • ✓ simple server flow
  • ✓ branching flow
  • ✓ nested depth 2
  • ✓ nested depth 3
  • ✓ nested depth 4
  • ✓ nested depth 5
  • ✓ nested depth 5 multi branch
  • ✓ reserved keyword branch
  • ✓ binding in string literal
  • ✓ namespace nested flow
  • ✓ nested labels
  • ✓ multi event chain
  • ✓ namespace labels combo
  • ✓ empty payload branches
  • ✓ loop module qualified
  • ✓ loop imported module
  • ✓ loop in library tapped from user
  • ✓ subflow defines semantics
MODULE SYSTEM / IMPORTS 15/16
  • ✓ 001 file import basic
  • ✓ 002 directory import basic
  • ✓ 003 directory import public
  • ✓ 004 file processor
  • ✓ 005 deep error handling
  • ✓ 006 transitive file import
  • ✓ 007 dir import basic
  • ✓ 008 dir import no pub
  • ✓ 009 dir import dotted
  • ✓ 010 dir import flow
  • ✓ 012 auto import parent
  • ✓ 012 optional parent
  • ✗ 013 module event globbing
  • ✓ 014 auto import index
  • ✓ 015 sibling in same directory
  • ✓ 020 cross module literal arg
MODULE SYSTEM / NAMESPACES 2/2
  • ✓ 001 directory namespace collision
  • ✓ 002 local name priority
MODULE SYSTEM / PACKAGES 1/1
  • ✓ 002 package requires npm
PARSER 6/6
  • ✓ 050 identity branches
  • ✓ 052 braceless branch constructors
  • ✓ 053 braceless continuation constructors
  • ✓ 060 single line source blocks
  • ✓ 070 nested tilde invocations
  • ✓ 080 nested when guards
COMPILER FEATURES / PARSER 52/55
  • ✓ lenient multiple errors
  • ✓ 001 event multiline shape
  • ✓ 003 conditional imports
  • ✓ 004 branch when clauses
  • ✓ 006 flow checker validation
  • ✓ 007 flow checker missing else
  • ✓ 008 tap nested continuation
  • ✓ 009 source with scope capture
  • ✓ 010 module annotations
  • ✓ 011 optional branch catchall
  • ✓ 012 missing required branch
  • ✓ 013 void event chaining
  • ✓ 014 void chaining nested
  • ✓ 015 abstract impl
  • ✓ 016 optional branches ignored
  • ✓ 017 catchall end to end
  • ✓ 018 multiline annotations
  • ✓ 019 subflow multiline call
  • ✓ 020 transitive imports
  • ✓ 022 invocation parentheses rules
  • ✓ 023 pipeline chain depth
  • ✓ 023 template interpolation
  • ✗ 024 source scope capture
  • ✓ 029 transform requires comptime
  • ✓ 030 comptime flows
  • ✓ 031 annotations in ast
  • ✓ 032 implicit source param
  • ✓ 034 parser wrapper
  • ✓ 035 circular imports
  • ✓ 035 loop unhandled branch
  • ✓ 036 expression parameter
  • ✓ 036 parser runtime
  • ✓ 037 expression scope capture
  • ✓ 038 implicit expr and source
  • ✓ 039 file source syntax
  • ✓ 040 expression string capture
  • ✓ 041 expression backslash escape
  • ✓ 042 orisha pattern
  • ✓ 043 inline continuation rejected
  • ✓ 044 source block with branches
  • ✓ 045 source block in pipeline
  • ✓ 046 implicit expression with semicolon
  • ✓ 050 expression parameter emit
  • ✓ 050 subflow field shorthand
  • ✓ 052 pattern branches
  • ✓ 053 reject old tap syntax
  • ✓ 054 inline source block args
  • ✗ 056 cross module comptime dispatch
  • ○ 057 cross module comptime callsite fields
  • ✓ 058 cross module comptime return type
  • ✓ 059 reject tilde after pipe forward
  • ✓ 060 proc abstract override
  • ✓ 061 reject zig struct syntax
  • ✓ 062 reject empty brace payload
  • ✓ 063 reject single field braces
COMPILER FEATURES / COMPILATION 12/13
  • ✓ 001 cross module type basic
  • ✓ 003 cross module type basic
  • ✓ 004 cross module type nested
  • ✓ 005 cross module type nullable
  • ✓ 006 std module type ref
  • ✓ 007 parser dump ast
  • ✓ 008 parser benchmark
  • ✓ 010 module annotation serialization
  • ✓ 021 void chaining codegen
  • ✗ 022 combined continuation bugs
  • ✓ 023 comptime program return
  • ✓ compiler requires
  • ✓ compiler flags declare
COMPILER FEATURES / FLOW CHECKER 6/7
  • ✓ 001 unused binding error
  • ✓ 002 discard binding ok
  • ○ 003 interpolation use in for loop
  • ✓ 005 reject void redundant terminator
  • ✓ 006 reject branch payload unbound
  • ✓ 007 reject continuation without branch handler
  • ✓ 010 optional branch catchall required
COMPILER FEATURES / CODEGEN 1/1
  • ✓ 002 emitter wrapper
COMPILER FEATURES / EMITTER 4/4
  • ✓ 010 variable naming nested scopes
  • ✓ 011 print ln continuation ordering
  • ✓ 012 for binding in nested range
  • ✓ 013 qualified type in branch
COMPILER FEATURES / STD LIBRARY 1/1
  • ✓ 020 args basic
COMPILER FEATURES / SUBFLOW 1/1
  • ✓ 010 plain value branch
SYNTAX / STRUCT CONSTRUCTORS 2/2
  • ✓ 020 field punning
  • ✓ 021 field punning shorthand
ADVANCED FEATURES / COMPTIME 51/60
  • ✓ 001 import registers taps
  • ✓ 002 import registers taps wildcards
  • ✓ 003 implicit destructuring shadowing
  • ✓ 005 annotation inline syntax
  • ✗ 006 event taps
  • ✓ 007 event taps nested
  • ✓ 008 annotation vertical syntax
  • ✗ 009 multiple taps
  • ✓ 010 annotation edge cases
  • ✗ 013 tap chains
  • ✓ 014 taps with labels
  • ✗ 015 when clauses
  • ✓ 017 namespace wildcards
  • ✓ 018 ccp opt in
  • ✓ 020 ccp flag only
  • ✓ 021 build requires basic
  • ✓ 022 multiline params
  • ✓ 023 scoped patterns
  • ✓ 024 shorthand field params
  • ✓ 025 qualified patterns
  • ✓ 026 destination scoping
  • ✓ 027 conditional imports
  • ✓ 028 conditional import flag off
  • ✓ 029 conditional import flag on
  • ✓ 030 build command sh
  • ✓ 031 flow annotations
  • ✓ 032 default override basic
  • ✓ 033 default with dependencies
  • ○ 034 metatype branch requires binding
  • ✓ 035 tap void event transition
  • ✓ 036 tap terminal invocation
  • ✓ 037 tap destination matching
  • ✓ 038 tap terminal void
  • ✓ 039 branch payload requires binding
  • ✓ 040 literate annotations
  • ✓ 040 opaque tap skipping
  • ✗ 040 tap as library
  • ✓ 041 metatype profile binding
  • ✓ 042 metatype transition binding
  • ○ 042 named expression params
  • ✗ 042 tap nested invocation
  • ✓ 043 metatype audit binding
  • ✓ 044 metatype multiple observers
  • ✓ 045 metatype when guards
  • ✓ 046 metatype enum helpers
  • ✓ 047 deps system
  • ✓ 048 branch payload discard ok
  • ✓ 048 deps install
  • ✗ 049 invocation meta
  • ✓ 050 build flag check
  • ✓ 051 build variants
  • ✓ 052 optional expression
  • ✓ 053 help discovers commands
  • ✓ 054 help discovers flags
  • ✓ 055 command subcommands
  • ✓ 056 user defined flags
  • ✓ 057 build config basic
  • ✓ 058 build config annotation quotes
  • ✓ comptime pass noop
  • ✓ buildstep api
ADVANCED FEATURES / STDLIB 42/47
  • ✓ 001 std if
  • ✓ 002 stdlib if
  • ✓ 003 stdlib if scoped
  • ✓ 010 std for basic
  • ✓ 011 std for nested
  • ✓ 018 template define
  • ✓ 019 template lookup
  • ✓ 020 if inline codegen
  • ✓ 021 for zero overhead
  • ✓ 021 template lookup in transform
  • ✓ 022 for outer scope
  • ✓ 023 for pipeline
  • ✓ 024 for deeply nested
  • ✓ 025 if deeply nested
  • ✓ 026 for subflow
  • ✓ 027 capture basic
  • ✓ 028 capture multi
  • ✓ 030 println basic
  • ✓ 031 println types
  • ✓ 032 println blk basic
  • ✓ 033 println koru scope
  • ✓ 034 capture nested
  • ✓ 034 println conditionals
  • ○ 035 capture multi field
  • ✓ 035 println blk conditionals
  • ✓ 036 capture nested qualified
  • ✓ 036 transform order
  • ✓ 037 nested if simple
  • ✓ 038 capture binding qualified
  • ✓ 038 nested for simple
  • ✓ 039 if inside for
  • ✓ 040 for inside if
  • ✓ 041 triple nested
  • ✓ 042 capture if for multi
  • ✓ 043 const basic
  • ✓ 044 const simple
  • ✓ 045 capture array index
  • ✓ 046 capture existing struct
  • ✓ 050 transform impl pattern
  • ○ 060 fs read lines
  • ✓ 070 for with binding
  • ○ 080 ecology circular import
  • ✓ 081 ecology pass ran mechanism
  • ○ 082 ecology custom transform
  • ○ 083 ecology module aliasing
  • ✓ 090 rings basic
  • ✓ 091 print float format
ADVANCED FEATURES / KEYWORD 5/5
  • ✓ 001 keyword basic
  • ✓ 002 keyword collision
  • ✓ 003 keyword explicit
  • ✓ 004 keyword requires pub
  • ✓ 005 keyword expression
ADVANCED FEATURES / PHANTOM TYPES 59/69
  • ✓ 001 module qualified phantom states
  • ✓ 002 phantom state mismatch
  • ✓ 003 unknown phantom module
  • ✓ 004 cleanup obligation escape
  • ✓ 005 cleanup obligation satisfied
  • ✓ 006 cleanup consumed by disposal
  • ✓ 007 use after disposal
  • ✓ 008 obligation escapes via interface
  • ✓ 009 universal wildcard metatype
  • ✗ 010 module wildcard metatype
  • ✓ 011 auto discharge multiple
  • ○ 011 transition metatype
  • ✗ 012 auto discharge explicit with multiple
  • ✓ 012 auto discharge none
  • ✓ 013 auto discharge explicit ok
  • ✓ 014 scope for loop inner
  • ✓ 015 scope for loop outer
  • ✓ 016 scope nested
  • ○ 017 scope label loop
  • ✓ 018 auto discharge escaped obligation
  • ✓ 019 auto discharge branch constructor
  • ✓ 019 for manual done ok
  • ○ 020 auto discharge void event
  • ✓ 020 for manual each error
  • ✓ 021 auto discharge multiple resources
  • ✓ 021 for auto done ok
  • ✓ 022 if manual both branches
  • ✓ 023 if auto both branches
  • ✓ 024 if hybrid manual auto
  • ✓ 025 auto discharge disabled
  • ✓ 025 nested if in for
  • ✓ 026 auto discharge warn
  • ✓ 026 nested for in if
  • ✓ 027 db transaction pattern
  • ✓ 027 default discharge annotation
  • ✓ 028 ambiguous without default
  • ✓ 028 optional branch obligation
  • ✓ 030 taps with auto discharge
  • ✓ 031 tap binding substitution
  • ✓ 032 nested for scopes
  • ✗ 035 autodischarge prefers void
  • ✓ 036 autodischarge no void candidate
  • ✓ 037 default discharge must be void
  • ✓ 040 undisposed nested obligation
  • ✓ 041 auto discharge single
  • ✗ 042 metatype binding scope
  • ✓ 050 union accepts either state
  • ✓ 051 union with consume marker
  • ✓ 052 escape field name mismatch
  • ✓ 053 for loop obligation escape
  • ○ 055 auto discharge cascade
  • ✓ 056 union per member consume marker
  • ✓ 057 auto discharge emission parity
  • ✓ 058 reject issue on input
  • ✓ 059 reject consume on output
  • ✓ 060 reject state mismatch on input
  • ✓ 061 inline obligation cascade
  • ✗ 062 reject identity struct mismatch
  • ✓ obligation lost at boundary
  • ✓ multiple cleanup paths
  • ✓ multiple resources cleanup
  • ✓ multiple resources partial cleanup
  • ✓ state variable wildcard
  • ✓ state variable constrained accepts
  • ✓ state variable constraint violation
  • ✓ state variable chaining
  • ○ phantom state mismatch
  • ✓ phantom state valid
  • ✓ multiple errors
ADVANCED FEATURES / TYPE SYSTEM 1/1
  • ✓ 001 type declaration
ADVANCED FEATURES / TYPES 4/4
  • ✓ 001 struct basic
  • ✓ 002 struct keyword
  • ✓ 003 struct pub keyword
  • ✓ 004 struct in flow
ADVANCED FEATURES / AUTO PROC 3/3
  • ✓ 001 basic passthrough
  • ✓ 002 phantom transition
  • ✓ 004 uncalled event ok
ADVANCED FEATURES / PATTERN BRANCHES 3/4
  • ✓ 001 http routing
  • ✓ 002 pattern syntax
  • ○ 003 pattern dispatch
  • ✓ 004 http routing
ADVANCED FEATURES / SUBFLOWS 12/12
  • ✓ subflow immediate
  • ✓ subflow flow
  • ✓ subflow chained
  • ✓ subflow multi continuation
  • ✓ subflow invalid branch
  • ✓ subflow with taps
  • ✓ nested recursive label
  • ✓ 001 subflow inline body
  • ✓ 002 cross module impl inline body
  • ✓ 003 orisha router showcase
  • ✓ 004 nested router
  • ✓ 005 static router nested
ADVANCED FEATURES / OPTIONAL BRANCHES 9/10
  • ✓ 001 basic catchall
  • ✓ 002 explicit plus catchall
  • ✓ 003 ignored no catchall
  • ✓ 004 shape error
  • ✓ 005 all optional
  • ✓ 006 api evolution
  • ✓ 007 when guards
  • ○ 008 event pump
  • ✓ 009 no handler silent
  • ✓ 010 catchall audit binding
ADVANCED FEATURES / TAPS OBSERVERS 5/7
  • ✓ branch coverage complete
  • ✓ void event no branches
  • ✓ multiple events mixed
  • ✓ tap when clause filtering
  • ✓ tap shorthand syntax
  • ○ multi branch tap
  • ✗ meta event taps
ADVANCED FEATURES / INTERCEPTORS 0/4
  • ○ 001 basic intercept
  • ○ 003 single interceptor error
  • ○ 004 opaque protection
  • ○ 010 no function calls in payload
ADVANCED FEATURES / PHANTOM TYPES 1/1
  • ✓ 020 label jump obligation
ADVANCED FEATURES / VARIANTS 4/8
  • ✓ variants basic
  • ○ variant compilation
  • ✓ blur variants
  • ○ gpu blur real
  • ✓ zig and gpu variants
  • ✓ gpu compiler pass
  • ○ actual glsl compilation
  • ○ gpu execution
ADVANCED FEATURES / TEMPLATING 2/4
  • ✓ 001 basic interpolation
  • ✓ 002 conditionals
  • ○ 003 source metadata
  • ○ 004 optimized codegen
ADVANCED FEATURES / KERNEL 18/23
  • ✓ 001 shape basic
  • ○ 002 array init
  • ✓ 003 pairwise basic
  • ○ 004 dynamic shape
  • ✓ 005 user event binding
  • ✓ 010 layout metadata
  • ✓ 020 nbody benchmark
  • ✓ 021 multiline source
  • ✓ 022 singleline shape bug
  • ✓ 023 init in pipeline
  • ✓ 040 self basic
  • ✓ 042 pairwise symmetric
  • ✓ 043 pairwise other readonly
  • ✓ 050 reject for in kernel
  • ✓ 051 reject branch constructor in kernel
  • ✗ 052 reject user event in kernel
  • ✗ 053 reject stdlib event in kernel
  • ✓ 054 require computed branch
  • ✓ 060 multi op fusion
  • ✓ 070 step basic
  • ✓ 080 multiline chained computed
  • ✗ 090 nbody multistep
  • ✓ 999 playground
ADVANCED FEATURES / TESTING 10/10
  • ✓ 001 test syntax
  • ✓ 002 mock multiple branches
  • ✓ 003 pure event no mock
  • ✓ 004 constant event auto inline
  • ✓ 005 impure event error
  • ✓ 006 impure event fixed
  • ✓ 007 failing test
  • ✓ 008 complex flow test
  • ✓ 009 cross module mock
  • ✓ 010 unexpected branch fails
CONTROL FLOW 3/4
  • ✓ 050 expand basic
  • ✓ 051 expand stdlib wrap
  • ✓ 052 expand with continuations
  • ○ 060 auto thread pipeline
RUNTIME FEATURES 2/2
  • ✓ 060 fmt blk autodispose
  • ✓ 061 phantom autodispose
RUNTIME FEATURES / BUDGETED INTERPRETER 6/7
  • ✓ 001 basic budget tracking
  • ✓ 002 budget exhaustion
  • ✓ 003 handle pool tracking
  • ✓ 004 auto discharge
  • ✓ 005 exhaustion with handles
  • ✓ 006 identity branch phantom
  • ✗ 010 shape contract
RUNTIME FEATURES / PURITY CHECKING 8/9
  • ✓ 001 pure proc annotation
  • ✓ 002 unannotated proc impure
  • ✓ 003 subflow locally pure
  • ✓ 004 pure on event redundant
  • ✓ 005 subflow transitive pure
  • ✓ 006 event purity from pure impl
  • ✓ 007 event purity from impure impl
  • ✓ 010 subflow impure
  • ○ 011 opaque procs
RUNTIME FEATURES / PERFORMANCE 0/20
  • ? array by reference
  • ○ 001 profile metatype
  • ○ 002 profile release
  • ○ 003 profiler loop
  • ? 006 rings vs channels
  • ? 007 simple loop
  • ○ 008 event taps overhead
  • ? 009 multi consumer async
  • ○ 010 threading library
  • ? 011 loop optimization basic
  • ○ 012 loop optimization nested
  • ○ 013 loop optimization work
  • ? generic ring type
  • ? generic ring actual
  • ? ring with taps
  • ? ring with when filter
  • ? when at callsite
  • ? ring with multitaps
  • ⏭ dead code elimination
  • ⏭ handler caching
RUNTIME FEATURES / COORDINATION 6/11
  • ✓ 001 user coordinator
  • ○ 003 impl override only
  • ○ 004 impl with delegation
  • ✓ 005 impl no implementation
  • ✓ 006 coordinator timing
  • ○ 007 tap visibility delegation
  • ✓ 008 pipeline profiling
  • ✗ 009 composed timing
  • ✓ 010 ast dump stages
  • ✓ 011 coordinator timing
  • ✗ custom coordinator bug
RUNTIME FEATURES / RUNTIME 32/36
  • ✓ 001 parser userland
  • ✓ 010 registry scope basic
  • ✓ 011 registry scope composition
  • ✓ 012 registry dispatch test
  • ✓ 013 interpreter test
  • ✓ 014 interpreter benchmark
  • ✓ 015 interpreter dataflow
  • ✓ 016 interpreter conditionals
  • ✓ 017 expr evaluator
  • ✓ 018 runtime if
  • ✓ 019 interpreter if
  • ✓ 020 interpreter if e2e
  • ✓ 021 if arg inspection
  • ✓ 022 if expression parsing
  • ✓ 025 interpreter benchmark real
  • ✓ 026 interpreter run event
  • ✓ 030 honest benchmark
  • ✗ 035 interpreter binding args
  • ✓ 036 interpreter for loop
  • ○ 037 interpreter field types
  • ✓ 038 interpreter nested loop benchmark
  • ✓ 039 runtime eval scope
  • ✓ 040 registry scope dotted
  • ✓ 041 registry typed args
  • ✗ 042 registry scope debug
  • ✓ 043 runtime run scope
  • ✓ 044 runtime run budget
  • ✓ 045 runtime run event denied
  • ✓ 046 runtime run scope not found
  • ○ 047 runtime run parse error
  • ✓ 048 runtime run fail fast
  • ✓ 049 runtime run lenient
  • ✓ 050 runtime eval autodischarge
  • ✓ 051 runtime run budget autodischarge
  • ✓ 052 interpreter identity result
  • ✓ 053 registry alias
RUNTIME FEATURES / RESOURCE BRIDGE 2/2
  • ✓ 001 bridge basic
  • ✓ 002 cross session discharge
INTEGRATION TESTING / NEGATIVE TESTS 28/31
  • ✓ 001 unclosed input brace
  • ✓ 002 unclosed branch brace
  • ✓ 005 missing event name
  • ✓ 011 invalid module qualifier
  • ✓ 012 multiple defaults error
  • ✓ 013 ambiguous override error
  • ✓ 021 duplicate branch names
  • ✓ 022 double pipe branch
  • ✓ 023 branch without name
  • ✓ 030 missing colon in field
  • ✓ 031 missing comma between fields
  • ✓ 032 numeric field name
  • ✓ 033 empty type after colon
  • ✓ 050 import empty path
  • ✓ 051 import without quotes
  • ✓ 061 unknown branch in flow
  • ✓ 062 undefined event call
  • ✓ 063 missing event param
  • ✓ 064 extra event param
  • ✓ 065 pub proc double tilde
  • ⏭ 066 duplicate proc
  • ✓ 067 orphan loop jump
  • ✓ 069 string type
  • ✓ 070 eof in subflow impl
  • ✗ 070 universal wildcard concrete
  • ✗ 071 module wildcard concrete
  • ✓ 071 std log event name
  • ✓ 072 event wildcard concrete
  • ✓ 080 comment inside chain
  • ✓ 080 mock shape mismatch
  • ✓ 090 unknown label error
INTEGRATION TESTING / NEGATIVE TESTS / 020 parse errors 1/1
  • ✓ missing event keyword
INTEGRATION TESTING / NEGATIVE TESTS / 030 type errors 1/1
  • ✓ undefined event
INTEGRATION TESTING / BUG REPRODUCTION 4/4
  • ✓ 001 slice type imported module
  • ✓ 002 array literal imported type
  • ✓ 003 stdlib runtime import
  • ✓ 007 module qualified bug
INTEGRATION TESTING / VALIDATION 7/7
  • ✓ import io
  • ✓ import dotdot forbidden
  • ✓ import unknown alias
  • ✓ import lib root
  • ✓ import requires dollar prefix
  • ✓ import explicit extension
  • ✓ field shadows event name
STDLIB / STRING 2/2
  • ✓ 001 string basic
  • ✓ 002 string ownership
STDLIB / FMT 1/1
  • ✓ 001 fmt ln basic
EVENT GLOBBING 4/10
  • ○ 000 permissive event name parsing
  • ✓ 001 glob declaration syntax
  • ✓ 002 glob invocation match
  • ○ 003 glob suffix validation
  • ○ 005 glob with variants
  • ✓ 010 generics bracket syntax
  • ✓ 011 generics param extraction
  • ○ 020 generics ring buffer e2e
  • ○ 030 ai error explanation
  • ○ 031 ai test analysis
EXAMPLES SHOWCASE 1/1
  • ✓ HELLO WORLD
EXAMPLES SHOWCASE / LANGUAGE SHOOTOUT 13/13
  • ✓ 01 unused connection
  • ✓ 02 uncommitted tx
  • ✓ 03 valid commit
  • ✓ 04 valid rollback
  • ✓ 05 commit without close
  • ✓ 06 multiple execs
  • ✓ 07 serial transactions
  • ✓ 08 close without transaction
  • ✓ 09 empty transaction
  • ✓ 10 wrong base type
  • ✓ 11 wrong base type reverse
  • ✓ 12 wrong base type zig catches
  • ✓ 13 wrong base type reverse zig catches
Learn / RUNTIME FEATURES / PURITY CHECKING

runtime features / purity checking

✓ 8 passing ○ 1 planned

Lessons

1 ✓ Passing
001 pure proc annotation
2 ✓ Passing
002 unannotated proc impure
3 ✓ Passing
003 subflow locally pure
4 ✓ Passing
004 pure on event redundant
5 ✓ Passing
005 subflow transitive pure
6 ✓ Passing
006 event purity from pure impl
7 ✓ Passing
007 event purity from impure impl
8 ✓ Passing
010 subflow impure
9 ○ Planned
011 opaque procs — The point of an [opaque] proc is to have to highlight it as opaque because you're intentionally calling Koru-events FROM a Koru-event, breaking the flow. This has performance implications, and is almost ALWAYS mechanically refactoringable to returning to the calling flow, making the code easier to optimize.
Koru logo Koru

The Event Continuation Language

Community

Contributing GitHub Discord

Resources