Roadmap & stability

Falx is pre-1.0 and maintained in spare time. There is no backwards-compatibility guarantee - breaking changes to syntax and behaviour are expected before a 1.0 release, and there's no promised timeline for any of this. Treat everything below as direction, not a commitment.

Rendered live from ROADMAP.md, cached for an hour at a time. See the changelog for what has already shipped.

This is a rough picture of where Falx is heading. There are no promises regarding new features, as Falx is maintained in spare time, and priorities may shift. Items move between sections as they are picked up; see Issues and CHANGELOG.md for what will and has been implemented respectively.

Have an opinion on the ordering, or want to pick something up? Open an issue or see CONTRIBUTING.md.

Now

Features currently in development or planned for the immediate future:

  • Expanded standard library - math functions, random methods, filesystem utilities and networking modules
  • Improved module system - continue improving module discovery, relative imports and module organization
  • CLI improvements - improve commands, help output, version information and developer experience

Planned

Larger features that fit Falx's current direction:

  • Packaging - make Falx installable through pip or available as a standalone executable rather than requiring python -m src.Main
  • Ternary operators - add a concise conditional expression syntax
  • Pattern matching - potentially introduce a match/switch-style statement
  • OOP - classes, class inheritance, and upgraded structs with additional features
  • File and process utilities - provide a cleaner standard interface for interacting with the filesystem and processes
  • Improved string functionality - expand the built-in string API with additional manipulation and inspection methods

Under consideration

Bigger, less certain ideas:

  • Static/optional type annotations
  • Attributes/decorators - annotations such as [decorator] for functions and classes
  • Bytecode compiler and VM - a compiled bytecode execution path as a faster alternative to the current tree-walking interpreter
  • Editor tooling - syntax highlighting and an LSP
  • Language specification and documentation site - a formal specification and dedicated documentation once the language syntax and semantics are stable

Later

These are not expected to be implemented soon, but are worth keeping on the roadmap:

  • Multithreading / concurrency primitives
  • Package manager and third-party dependency ecosystem
  • Backwards compatibility guarantees - pre-1.0 breaking changes are expected

Recently shipped

v0.3.0

  • Default function arguments
  • REPL mode
  • Tuples
  • Tuple destructuring
  • Improved module system
  • Module caching and canonical module resolution
  • Relative and nested module resolution
  • Improved falx test command
  • Test filtering
  • Snapshot testing
  • Expected diagnostic-code testing
  • Test timeouts and multiprocessing
  • Recursive test discovery
  • Improved runtime diagnostics
  • Improved lexical scoping
  • Improved break and continue semantics
  • Improved parser and lexer diagnostics
  • Expanded runtime, parser, lexer and integration test coverage
  • Numerous runtime and interpreter bug fixes

Previous releases

  • Line/column-aware runtime error messages
  • Friendly parser errors
  • Unique, separate errors instead of generic Python errors
  • Module system

See CHANGELOG.md for the complete history.

Worth being upfront about: the roadmap above lists an official docs site under "Under consideration" - the site you're reading is an unofficial, third-party set of docs built by reading and running the interpreter's source, not something published or endorsed by the project itself. Expect it to need updates as the language changes, and treat the GitHub repository as the final authority whenever the two disagree.