Releases: google/s2geometry
Releases · google/s2geometry
v0.14.0
What's Changed
- Update to 2025-12-24 google3 version by @jmr in #506
- Add copy constructors and copy assignment for S2Region derived classes
- S2LatLngRect: Fix GetCapBound for tall and wide rects (>90 and >180 deg)
- Avoid unnecessary zero-initialization of S2Point arrays in S2Loop,
S2Polyline, S2LaxPolygonShape, S2LaxPolylineShape, and S2LaxLoopShape. - s2text_format: Return absl::StatusOr, deprecate old bool/OrDie functions
- Add CTAD deduction guides for S2ContainsPointQuery and S2ClosestEdgeQuery
- Deprecate MakeS2ContainsPointQuery and Make S2ClosestCellQuery functions
- Release benchmarks
- When using CMake, the benchmark and googletest libraries will be
downloaded if tests are enabled. GOOGLETEST_ROOT is no longer used. - Switch tests to gtest_discover_tests for fine-grained progress
- EncodedStringVector: Make safety check lazy
- Add gmock matchers for testing all fields of S2Polyline, S2Polygon,
and S2Loop. - Use <=> operator for S1Angle, S1ChordAngle, S2Cell, and S2CellId
comparisons
- S2CellId: Remove ABSL_ATTRIBUTE_PACKED
- S2Cell::GetDistance: Optimize same-face case by @jmr in #479
- S2ClosestEdgeQueryBase: Fix typo in comment by @benguild in #490
- Modernize Bazel build configuration with Bazel 9 compatibility and BCR best practices by @mmorel-35 in #496
- SWIG: Ensure SWIG 4.4 compatibility by @jmr in #510
- exactfloat: Remove OpenSSL dependency by @smcallis in #453
- S2Polygon, S2Polyline: Document as obsolete by @benguild in #473
- S2Cell::Contains: Increase expansion to 5/3*DBL_EPSILON by @jmr in #535
- python: Bump min version to 3.10 by @jmr in #573
- Some pybind11 bindings have been added
New Contributors
- @benguild made their first contribution in #490
- @mmorel-35 made their first contribution in #496
- @deustis made their first contribution in #524
Full Changelog: v0.13.1...v0.14.0
v0.13.1
v0.13.0
Interface Changes
- Bump required versions
- abseil-cpp: LTS 20250814
- clang: 14
- CMake: 3.22
- OpenSSL: 1.1
- Require C++17
Fixes/enhancements
- New function: S2DensityTree::Dilate
- S2CellId: Make lookup tables constexpr, removing runtime init
- New
S2Cell::IsDistanceLessand related predicates - Do not use
#pragma STDC FP_CONTRACT offfor gcc to try to
prevent warnings. gcc has its own pragma (which was always
used) - Switch some
ABSL_LOG(ERROR)s toDFATAL - New functions
- MutableS2ShapeIndex::Remove()
- S2EdgeVectorShape::set_dimension()
- S2Polygon::MakeFull()
- Modernize
ExactFloatinterface- Replace
exactfloat::is_nan()withisnan(const ExactFloat&) - Replace
ToDouble()withexplicit operator double() - Add
fpclassify(const ExactFloat&)
- Replace
- Fix S2ShapeNestingQuery when two chains share a vertex
- Fix S2Polygon bug when intersecting polyline
- Add S2ClosestEdgeQuery::VisitClosestShapes
- Delete deprecated S2Error::text(); use message() instead
- Ensure _fp_contract_off.h is included everywhere
- Add thread annotations to SpinLock
- Convert many const vector<>&s to Span<>s
- Add noexcept to move operators
- Make some comparisons stable for sorting
- Guard against overflow in Decode functions
- Remove
S2_DEFINE_*flags macros and useABSL_FLAGdirectly
What's Changed
- Fixed where
cc_configure_extensioncomes from. by @vtsao-openai in #410 - S1Angle::SinCos: Disable sincos for glibc by @jmr in #414
- workflows: Disable macos and enable ubuntu-22 by @jmr in #412
- Fix some comments in s2builderutil_snap_functions by @rsned in #418
- Update s2builder.h comments by @rsned in #419
- CMakeLists: Make installation optional by @idevtm in #421
- CMakeLists: Work around clang sized dealloc bug by @jmr in #422
- dependabot.yml: Add daily github-actions update by @jmr in #424
- MODULE.bazel: Update by @rsned in #427
- test.yml: build with --parallel by @jmr in #429
- test.yml: Run with ctest --parallel by @jmr in #430
- GetCommonAncestorLevel: work around bit_width return type bug by @idevtm in #431
- Try to fix CMakeLists.txt by @MBkkt in #433
- Fix warnings by @MBkkt in #436
- Remove incorrect thread-safety annotation by @MBkkt in #437
- Update to 2025-07-09 google3 version by @jmr in #440
- README.md: Bump abseil-cpp and C++ version by @jmr in #444
- exactfloat: Replace port.h macros with absl::endian by @jmr in #445
- Publish smcallis's username by @jmr in #443
- Add design docs for S2ValidationQuery by @smcallis in #442
- Add tag_regex for dynamic version by @b4rdos in #451
- Update to 2025-09-24 google3 version by @jmr in #454
- Fix bazel build by @jmr in #455
- bazel.yml: Add Bazel workflow by @jmr in #459
- Update to 2025-10-24 google3 version by @jmr in #465
- Update to 2025-11-06 google3 version by @jmr in #472
New Contributors
- @vtsao-openai made their first contribution in #410
- @rsned made their first contribution in #418
- @idevtm made their first contribution in #421
- @smcallis made their first contribution in #442
- @dependabot[bot] made their first contribution in #447
- @b4rdos made their first contribution in #451
Full Changelog: v0.12.0...v0.13.0
v0.12.0
Interface Changes
- Remove glog and gflags dependencies. Now abseil-cpp is used.
- ABSL_LOG macros are used instead of S2_LOG
- The indirection could be added back if requested
- ABSL_CHECK macros are used instead of S2_CHECK
- S2_DEFINE_ now forwards to ABSL_FLAG
- ABSL_LOG macros are used instead of S2_LOG
- New files:
- s2chain_interpolation_query
- s2density_tree
- s2gmock_matchers
- s2fractal
- s2shapeutil_count_vertices
- s2shapeutil_edge_wrap
- New S2Shape functions:
- Incoming
- Outgoing
- IncidentOn
- Remove S2Shape::id()
- New predicates in s2predicates.h
- S2Region::GetCellUnionBound is now pure virtual
- Replace S2Testing::Random, which was based on random(3), with
new s2random:: namespace, based on abseil-cpp's random library.
This removes the use of global state. - Use int64_t instead of int64, etc.
- constexpr fixes
- Remove some old SWIG workarounds.
- Now requires abseil-cpp LTS 20240116
- S2Shape derived classes: Add decoding interface with S2Error
- S2Error: Interface is now similar to absl::Status, just with a
different error code type. In the future, this will probably
be replaced by absl::Status. - S2CellId: Made some functions constexpr
- s2edge_crossings: Fix CompareEdges for a case that never happens
- S2Polygon uses new S2LegacyValidQuery to validate geometry.
- S2ValidationQuery: New class
What's Changed
- Avoid deprecated
std::iteratorby @pateldeev in #353 - abseil-cpp supports vlog by @pateldeev in #354
- Update to latest google3 version by @jmr in #360
- Remove unused variable by @MBkkt in #366
- Update to 2024-06-21 google3 version by @jmr in #367
- Fix big endian build by @rschu1ze in #372
- Fix build with libcxx16 by @rschu1ze in #373
- Create and install a cmake config version file by @benbovy in #377
- Fix typos by @mwtoews in #378
- A bazel build and regression harness for s2geometry by @spendres in #361
- apply PEP621 by @zacharyburnett in #388
- Update CMakeLists.txt for python bindings by @andyneff in #394
- s2loop_measures_test: Disable GetSignedArea on arm64 macOS by @jmr in #396
- README.md: Update macOS instructions by @jmr in #397
- Fix macos build error by @andyneff in #399
- #402 update googletest for bazel build by @spendres in #404
- Update to latest google3 version by @jmr in #403
- Suggested fix for linking by @andyneff in #405
- automatically build library with
cmakeand test withctestby @zacharyburnett in #390 - Skip GetSignedArea.ErrorAccumulation test on macOS by @jmr in #407
New Contributors
- @pateldeev made their first contribution in #353
- @rschu1ze made their first contribution in #372
- @benbovy made their first contribution in #377
- @mwtoews made their first contribution in #378
- @spendres made their first contribution in #361
- @zacharyburnett made their first contribution in #388
- @andyneff made their first contribution in #394
Full Changelog: v0.11.1...v0.12.0
v0.11.1
v0.11.0
Interface Changes
- Add new files:
- s2hausdorff_distance_query: Computes "discrete" Hausdorff distance
- s2shape_nesting_query: Allows shell/hole queries
- Add move constructors/assignment for many types
- Remove deprecated Interpolate(t, a, b) (use Interpolate(a, b, t))
- Add AbslHashValue for S2CellUnion
- Require C++14 instead of C++11 (abseil-cpp requires it now)
- Require googletest >= 1.10 (for gmock)
- Location is now specified with -DGOOGLETEST_ROOT
- New classes:
- S2CellIterator
- S2CellIteratorJoin
- S2Coder
- New StableAngle function
- Delete many deprecated functions
- S2Point is now a different class from Vector3_d, not a typedef for it
- New edge/circle intersection ordering predicates
- New functions GetUVCoordOfEdge and GetIJCoordOfEdge
- Replace const char * with absl::string_view
What's Changed
- Update to 2022-04-08 google3 version by @jmr in #239
- Update to latest google3 version by @jmr in #254
- Fix build on big-endian architectures by @kgotlinux in #258
- Fix RemoveLast by @MBkkt in #267
- python: Named component accessors for S2Point by @podsvirov in #268
- Expose more functionality via the SWIG wrapper by @MikePlayle in #257
- Fix -DCMAKE_CXX_STANDARD ignored by CMakeLists by @LafeWessel in #273
- fix little typo problem in README.md by @MarkLai0317 in #274
- README.md: Add warning about API/ABI stability by @jmr in #281
- Fix undefined sanitizer issue in compact_array by @MBkkt in #284
- Allow already have abseil by @MBkkt in #285
- Remove trailing null from Python strings by @MikePlayle in #282
- Add missing comment by @MBkkt in #286
- Fix possible warning in header by @MBkkt in #287
- Fix missing include by @MBkkt in #291
- Remove unused variables by @MBkkt in #293
- Update to latest google3 version by @jmr in #297
- Fix address sanitizer issue in S2Loop move ctor/assign by @MBkkt in #298
- Add S2_USE_SYSTEM_INCLUDES cmake options to avoid s2 compile time warnings… by @MBkkt in #300
- Update to latest google3 version by @jmr in #312
- Add ability to create Python wheels by @selimnairb in #313
- value_lexicon: Fix build with abseil LTS 2023-08-02 by @acelyc111 in #334
- Add a CMake option BUILD_TESTS to decide whether to build S2 unit tests by @acelyc111 in #333
- Fix several MSVC build issues by @jherico in #338
- Add modern cmake config targets to s2geometry by @jherico in #339
New Contributors
- @kgotlinux made their first contribution in #258
- @MikePlayle made their first contribution in #257
- @LafeWessel made their first contribution in #273
- @MarkLai0317 made their first contribution in #274
- @selimnairb made their first contribution in #313
- @acelyc111 made their first contribution in #334
- @jherico made their first contribution in #338
Full Changelog: v0.10.0...v0.11.0
v0.10.0
- Add new files
- s2buffer_operation
- s2builderutil_get_snapped_winding_delta
- s2builderutil_lax_polyline_layer
- s2memory_tracker
- s2shapeutil_conversion
- s2winding_operation
- s2wrapped_shape
- thread_testing
- Expose some new functions in pywraps2
- Remove internal absl; depend on released absl
- Require SWIG 4
- Remove internal files that are no longer needed
- Improved documentation of EncodedS2ShapeIndex
- Fix accidental dependence on gtest even when not enabled.
Pre-release v0.10.0-2022.02.23.00
- Add new files
- s2buffer_operation
- s2builderutil_get_snapped_winding_delta
- s2builderutil_lax_polyline_layer
- s2memory_tracker
- s2shapeutil_conversion
- s2winding_operation
- s2wrapped_shape
- thread_testing
- Expose some new functions in pywraps2
- Remove internal absl; depend on released absl
- Require SWIG 4
- Remove internal files that are no longer needed
- Improved documentation of EncodedS2ShapeIndex
Release v0.9.0
The same as v0.9.0-2019.03.04.00.
Pre-release v0.9.0-2019.03.04.00
Fix gunit_prod dependency.