-
Notifications
You must be signed in to change notification settings - Fork 0
LuaJIT backporting guidelines
This doc should guide developer through the procedure of backporting the patches from the LuaJIT upstream. All patches not presented in our fork are classified into two queues: primary and backlog. Current status is available here. In the future the postponed changes originally placed to backlog can be re-prioritized and scheduled to be applied to the trunk.
Every bullet of this list is obligatory, but the order is not strict. If one is missing, please consult the maintainer.
- You have a patch. Otherwise there is nothing to backport.
- You have a problem (GitHub issue or pull request or thread in LuaJIT mailing list). Otherwise this is unlikely a patch, but rather enhancement or refactoring.
- You have a test (i.e. reproducer for the problem). Otherwise the backported changes are likely to be broken later. Again.
- You have a rationale for backporting. Otherwise drop this and do something more vital today.
If everything is done, you can send a series to our mailing list, so the maintainer apply it to the trunk.
Please, leave the commit subject unchanged, do not drop the original commit message and mention the changes you've done (see the examples here and here). If you can make the commit message more verbose, feel free to do it.
This section describes the procedure to fill the primary queue with the patches having a quite high relevance for backporting. Here are the approximate priorities:
- The most important patches are those related to VM and runtime. As for JIT it can be disabled, which can't be done for other platform components.
- Talking about host architectures, the priority list is the following:
-
x86_64
w/oLJ_GC64
-- this is the most popular choice for the Tarantool installations today -
x86_64
w/LJ_GC64
-- this is used only on OSX on developers laptops (at least I have seen no production on it) -
aarch64
-- this platform to be fully supported in the nearest future - Other host architectures
-
- Talking about OS, the priority list is the following:
-
GNU/Linux
-- this is the most popular choice for the Tarantool installations today -
OSX
and*BSD
-- these are also used, but not such widely as Linux - Other marginal operating systems
-
This is a secondary queue that contains the changes lacking one of the bullets from the checklist above: fixes with no tests, enhancements and refactoring. They can be moved to the primary one when all four bullets are checked, so there should be a regular activity for this.
Q: When the activity is "triggered"? A: I guess there is no strict triggers for activity. For now we have an upcoming task for backporting all aarch64-related patches. (#5629). Later this definitely should be a regular activity (fortnightly, monthly), but it also can be triggered by the issues faced when using Tarantool (e.g. #4537).
This section will grow when we start the backporting process for the existing patches.
Architecture Specifications
- Server architecture
- Feature specifications
- What's in a good specification
- Functional indexes
- Space _index structure
- R tree index quick start and usage
- LuaJIT
- Vinyl
- SQL
- Testing
- Performance
How To ...?
- ... add new fuzzers
- ... build RPM or Deb package using packpack
- ... calculate memory size
- ... debug core dump of stripped tarantool
- ... debug core from different OS
- ... debug Lua state with GDB
- ... generate new bootstrap snapshot
- ... use Address Sanitizer
- ... collect a coredump
Lua modules
Useful links