Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3.0 Tracking Issue #1092

Open
45 tasks
MikePall opened this issue Sep 21, 2023 · 0 comments
Open
45 tasks

v3.0 Tracking Issue #1092

MikePall opened this issue Sep 21, 2023 · 0 comments
Labels

Comments

@MikePall
Copy link
Member

MikePall commented Sep 21, 2023

This is a locked tracking issue. Discussion takes place in individual issues. Related issues will be created by the admins, when needed.

Do not open issues or PRs for any of these, or for unsolicited features. Do not work on or submit code, unless a discussion has been fully resolved and you have been tasked with the implementation.

Issues listed here may be handled in the v3.0 development cycle, but there's no guarantee for that.

The following issues are grouped by their scope. The groups are listed in approximate dependency/implementation order.

Initial Bringup and Cleanup

  • TBD: Scope and non-scope of v3.0 branch.
  • TBD: Open design issues, implementation order, schedule.
  • TBD: Sponsoring for continued maintenance and development.
  • Open v3.0 branch
  • Remove obsolete archs and arch-variants, see status page
  • Remove obsolete target platforms
  • TBD

Compile all/most standard library functions

  • REQ: Simplify/unify this between interpreter and JIT backend.
  • REQ: Do not compromise pure interpreter performance (Consoles, iOS).
  • TBD: Make FFI mandatory? Needs pre-compiled equivalent for interpreter.
  • TBD: More discussion and planning required.

Compile all/most bytecodes

  • [ISSUE] Compile closure creation, TBD effects on IR consistency

Syntax Extensions

  • REQ: Must not affect existing source code. Bytecode changes are OK.
  • Add bitwise operators #63, TBD metamethods or not
  • [ISSUE] Ternary a?b:c operator
  • [ISSUE] Optional dereference '?.' operator
  • [ISSUE] Floor division operator // and __idiv metamethod
  • [ISSUE] Soft continue keyword
  • [ISSUE] Allow underscores in number literals (lexer, not tonumber)

Compile-Time Evaluation

  • TBD: define scope, goals, non-goals and safety.

Garbage Collector

  • TBD: Initial scope and MVP.
  • New Garbage Collector #38
  • [ISSUE] Public API to set allocator limits
  • [ISSUE] Allocator hardening
  • [ISSUE] Account for auxiliary memory in GC pacing, TBD ffi.gc size parameter
  • [ISSUE] Memory profiler

Ports

Cleanups, Semantic Consistency

FFI Feature Completion

Bytecode Portability and Determinism

  • TBD: Maybe convert all ports (even 32 bit) to LJ_FR2? LJ_GC64 has a performance impact, but LJ_FR2 very little.

JIT-Compiler Enhancements

Pattern Matching Rewrite

  • REQ: Only handles Lua patterns, not full regex. No extensions planned.
  • REQ: Must be fast when only interpreted.
  • REQ: Must be fast for one-off use, too. Avoid allocating memory.
  • REQ: Handle dynamic patterns (misuse) reasonably.
  • FYI: 2-phase parse/exec bytecode-based prototype available, but does not fulfill all REQ.
  • TBD: Explore lazy parse + cache + trace approach. Explore QDFA.
  • TBD: Prevent ReDOS or not, consider implementation complexity and efficiency.
  • [ISSUE] Pattern matcher rewrite
  • [ISSUE] Pattern matching methods for string buffers
  • [ISSUE] JIT-compiled pattern matching

Repurpose Global+ Scope

  • GOAL: Improve performance for resolving module methods.
  • GOAL: Remove need for local abs = math.abs idiom, which is just red tape.
  • GOAL: No change required for most modular codebases. Immediate benefit.
  • REQ: Make this mode optional behind a CLI flag (name TBD).
  • REQ: Bytecode generation shortcuts resolution to a constant (upvalue-like).
  • REQ: Bind early at load. Collateral benefit: exposes misspellings like a linter.
  • REQ: Lift top-level require to shortcut 2nd-level resolution, too.
  • TBD: Specify exact constraints and effects. Check larger codebases.
  • TBD: Consistency is same as the idiom. Subsequent writes do not affect the local copy.
  • [ISSUE] Repurpose global+ scope

Debugging

  • TBD: Check third-party extensions that dig into VM internals.
  • TBD: Evaluate demand.
  • [ISSUE] Dump on assertion, TBD dump format, dump analysis, hookable
  • [ISSUE] Public API for VM introspection
  • [ISSUE] Fast breakpoints, TBD bytecode/mcode patching

Unconfirmed, Unclear

  • TBD: More likely to be moved to following versions.
  • TBD: any enhancement issues not yet tagged with a version
  • Make FFI mandatory
  • Make compiler extensible by loadable modules
  • Split optional features to loadable modules, default is builtin
  • More serializers, e.g. JSON, REQ: optional/module
@MikePall MikePall added the 3.0 label Sep 21, 2023
@LuaJIT LuaJIT locked and limited conversation to collaborators Sep 21, 2023
@MikePall MikePall pinned this issue Sep 21, 2023
@MikePall MikePall unpinned this issue Sep 21, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

1 participant