robust-predicates is a JavaScript library for fast, robust geometric predicates that return reliable orientation and containment results in 2D and 3D without being susceptible to floating point errors. It provides functions like orient2d, orient3d, incircle, and insphere, plus “fast” approximate variants for cases where robustness is not required.
Project status
- The repository appears to have recent activity, with an upstream push on 2026-09-10, but the last published tagged update shown here is v3.0.3 on 2026-03-22, so published updates are intermittent rather than continuous.
- Update cadence is low, with long gaps between tags (v3.0.1 in 2021, v3.0.2 in 2023, v3.0.3 in 2026). Relative to today (2026-10-02), the latest tagged update is several months old, even though there was later upstream activity.
AI summary generated
Recent updates
v3.0.3
v3.0.3 is described as a targeted fix for a rare precision-loss edge case in the `orient3d` predicate. The code diff also includes several non-functional changes to the project toolchain and CI/test setup.
v3.0.2
Release v3.0.2 makes small optimizations intended to improve `orient2d` performance and reduce minified bundle size. The documented changes are very minimal, but the code diff shows additional internal predicate math refactors beyond `orient2d`.
v3.0.1
Release v3.0.1 is primarily described as adding TypeScript types to the published NPM package. The code diff also shows several maintenance changes including CI Node version updates and devDependency upgrades that are not mentioned in the release notes.
Featuresv3.0.0
v3.0.0 switches the package to native ECMAScript modules, and updates package metadata to include a repository field. The codebase and test/bench tooling were updated accordingly to use ESM imports and ESM-safe file URL handling for reading fixtures.
BreakingFeaturesv2.0.4
Release v2.0.4 primarily claims performance and size improvements for the `orient2d` predicate, plus a general simplification of the codebase. The release notes do not mention changes to other predicates or any internal math utility refactors. The code diff shows a much broader rewrite across multiple robust predicate implementations and the shared expansion arithmetic utilities.
v2.0.3
v2.0.3 refactors the internal robust predicate implementations to simplify arithmetic and reduce output size (release notes claim about an 18% bundle size reduction). The diff shows substantial reworking of predicate internals and the code generation macros, plus benchmark and test updates.
v2.0.2
v2.0.2 is a small release focused on improving `insphere` robustness for difficult geometric configurations that require exact computation. The release notes only mention that fix, but the code diff also includes some internal refactoring that could affect any non-public/internal consumers.
v2.0.1
v2.0.1 changes the library's interpretation of the coordinate system by flipping the y-axis so it is oriented from top-to-bottom. This reverses the sign behavior of geometric predicates compared to the previous release notes for the affected functions.
Breakingv1.1.0
Release v1.1.0 adds new non-robust, approximate predicate variants: orient2dfast, orient3dfast, incirclefast, and inspherefast, along with a TypeScript declaration file. The library’s existing robust predicates (orient2d, orient3d, incircle, insphere) remain exported, and tests were extended to cover the new fast functions.
Featuresv1.0.0
This release completes the port of Shewchuk robust predicates by adding 3D orientation (orient3d) and 5-point sphere in-sphere test (insphere). The public entrypoint (index.js) now exports these additional predicates, and the build configuration was updated accordingly.
Features