- CRITICAL: Fix deeply nested environment serialization/deserialization ✅ FIXED in v0.4.0
- Fixed cycle hash collision bug in serialization.py
- Parent chain structure now preserved through serialization/deserialization
- All tests passing (643 tests) ✅
- Add regex matching support (
str-matchesfunction) ✅ Already implemented - Add fuzzy string matching support
Based on dotsuite patterns, JSL needs better JSON manipulation:
- Implement
get-pathfor deep path access ✅ Already implemented - Implement
set-pathfor deep path modification ✅ Already implemented - Implement
has-pathto check if deep path exists ✅ Already implemented - Add safe navigation operators (
get-safe,get-default) ✅ Already implemented - Support array indexing in paths (e.g.,
items[0].price) ✅ Already implemented - Support wildcard paths (e.g.,
users.*.email) ✅ Fixed in v0.4.0
- Implement
whereoperator for declarative filtering ✅ Special form - Add query expression evaluation (=, !=, >, <, contains, matches) ✅ Already implemented
- Support compound queries with and/or/not ✅ Already implemented
- Add
find-firstto get first matching element ✅ Added in v0.4.0 - Add
count-whereto count matching elements ✅ Added in v0.4.0
- Implement
transformoperator for pipeline transformations ✅ Special form - Add
assignoperation (add/update fields) ✅ Already implemented - Add
pickoperation (select specific fields) ✅ Already implemented - Add
omitoperation (remove specific fields) ✅ Already implemented - Add
renameoperation (rename fields) ✅ Already implemented - Add
defaultoperation (set defaults for missing fields) ✅ Already implemented
- Implement
group-byfor grouping collections ✅ Already implemented - Implement
index-byfor converting to keyed objects ✅ Already implemented - Implement
pluckfor extracting single field from collection ✅ Already implemented - Implement
uniquefor getting unique values ✅ Already implemented - Implement
flattenfor flattening nested arrays ✅ Added in v0.4.0 - Implement
zipfor combining arrays ✅ Already implemented
- Consider whether stack evaluator should use Closure and Env classes
- Unify closure representation between evaluators
- Create shared test utilities for both evaluators
- Optimize object evaluation in stack evaluator
- Add benchmarking suite
- Profile and optimize hot paths
- Consider JIT compilation for frequently used functions
- Implement memory limits for stack evaluator
- Add timeout support for both evaluators
- Implement better resource exhaustion messages
- Add resource usage statistics
- Add
switch/caseexpression - Add
loopconstruct with break/continue - Add
forloop over collections - Add pattern matching
- Improve error messages with line/column information
- Add stack traces for debugging
- Implement error recovery mechanisms
- Add validation functions
- Add optional type annotations
- Implement type checking
- Add type inference
- Create type declaration syntax
- Add trigonometric functions (sin, cos, tan, etc.)
- Add statistical functions (mean, median, stddev)
- Add random number generation
- Add matrix operations
- Add date/time parsing
- Add date arithmetic
- Add formatting functions
- Add timezone support
- Add hashing functions (SHA, MD5, etc.)
- Add encoding/decoding (base64, hex)
- Add UUID generation
- Consider encryption support
- Create Language Server Protocol (LSP) implementation
- Add syntax highlighting for editors
- Create debugger interface
- Add profiler tools
- Complete API documentation
- Add more tutorials
- Create cookbook with common patterns
- Add performance guide
- Current test coverage: 71% (643 tests passing) ✅
- Increase test coverage to 80%+
- Add property-based testing
- Create integration test suite
- Add performance regression tests
- Optimize serialization format
- Add compression support
- Implement incremental serialization
- Add versioning support
- Implement distributed evaluation
- Add remote procedure calls
- Create clustering support
- Implement work stealing
- Implement capability-based security
- Add permission system for host functions
- Create security audit tools
- Add code signing support
- Add input validation framework
- Implement schema validation
- Add sanitization functions
- Create security linting
- Design module system
- Create package repository
- Implement dependency resolution
- Add versioning support
- Add JavaScript interop
- Add Python interop beyond host functions
- Create REST API framework
- Add GraphQL support
- Create WASM target
- Implement native compilation
- Add JVM bytecode generation
- Create LLVM backend
- Implement tail call optimization
- Add constant folding
- Implement dead code elimination
- Add inlining optimization
Fix remaining test✅ All 643 tests passingJSON manipulation features✅ All core features implementedPedagogical documentation✅ Added docs/pedagogy/ with reading guide and traces- Blog posts - Extract narratives from paper/implementation
- Performance - Ensure scalability
- Tooling - Better developer experience (LSP, syntax highlighting)
Potential blog posts extractable from JSL's design and implementation:
- "Building a Lisp in 500 Lines of Python" - The recursive evaluator as a teaching tool
- "Content-Addressable Serialization: Handling Cycles Without Tears" - The serialization approach
- "From Recursion to Iteration: Defunctionalizing an Interpreter" - Recursive → stack evaluator transformation
- "Making Computation Resumable" - Stack-based evaluation and network mobility
- "JSON as Code: The Case for Homoiconic JSON" - Why JSON for code representation
- "Capability-Based Security in a Scripting Language" - JHIP and effect reification
- "Two Interpreters, One Language" - Why dual evaluators are pedagogically valuable
- "Implementing Lexical Scoping: Environments as Linked Lists" - The Env class explained
- "How Closures Really Work" - From definition to serialization
- "Query Languages for JSON: The
whereandtransformStory" - Declarative data manipulation
- "Network-Native Language Design" - Expand the SPLASH paper themes
- "Proving Interpreter Equivalence Through Testing" - The unified test suite approach
- The recursive evaluator is the reference implementation
- Stack evaluator needs to maintain behavioral parity
- All features must remain JSON-serializable
- Network transmission is a first-class concern
- Security through capability restriction is fundamental