-
-
Notifications
You must be signed in to change notification settings - Fork 399
Switch to JOML vectors. #7959
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
Open
sovdeeth
wants to merge
4
commits into
SkriptLang:dev/feature
Choose a base branch
from
sovdeeth:feature/joml-vectors
base: dev/feature
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Switch to JOML vectors. #7959
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Efnilite
requested changes
Jun 18, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks good
Efnilite
approved these changes
Jun 19, 2025
cheeezburga
approved these changes
Jun 25, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
breaking changes
Pull or feature requests that contain breaking changes (API, syntax, etc.)
enhancement
Feature request, an issue about something that could be improved, or a PR improving something.
feature-ready
A PR/issue that has been approved, tested and can be merged/closed in the next feature version.
needs testing
Needs testing to determine current status or issue validity, or for WIP feature pulls.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
In the pursuit of a Bukkit-less Skript, Vector is a rather large thorn in the side. It's used all over the place in many places that have no relation to Bukkit at all. It's also not exactly the more versatile or optimized implementation of vectors. Since Minecraft now provides JOML at no cost to us, it seems prudent to swap to relying on JOML vectors instead.
JOML vectors also open up some new optimization opportunities as they allow for more efficient operations compared to Bukkit's.
Solution
Replaces nearly every instance of Vector with Vector3d. The vector classinfo is now backed by Vector3d.
Vector remains in Bukkit-specific areas where it would be silly to try to force in Vector3d just to swap it back to Vector every time it's needed, but Vector should no longer be passed between syntaxes.
No additional optimizations have been made to existing implementation to help make this PR easier to review. It should be a 1:1 replacement as of now. Despite that, a small performance improvement of around 5-10% has been seen when testing basic vector operations.
I have added converters between Vector3d and Vector to help back-compatibility with addons, though that likely won't help a lot since any use of
%vector%
will now produce a Vector3d instead of the expected Vector.Vectors stored in variables will be deserialized as a Vector3d without issue, and vice versa if the user ever goes back to to a version prior to this PR.
It's very likely I've missed a spot or two and I would appreciate anyone willing to test this.
Testing Completed
No new tests added.
Supporting Information
This should target 2.13 at the earliest.
Breaking changes:
Completes: none
Related: none