From d16dfed8e83984c8338d9c1d9ac2183c169283df Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 21 Jun 2024 18:09:46 +0200 Subject: [PATCH 1/3] update the graph for https://www.cgal.org/releases.html --- .gitignore | 1 + images/release_history_sloccount.dat | 2 ++ images/release_history_sloccount.plt | 2 +- images/release_history_sloccount.png | Bin 28218 -> 28514 bytes 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index b670b3d15..bf1e7d0be 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,4 @@ Thumbs.db .rvmrc *~ .jekyll-cache +/node_modules diff --git a/images/release_history_sloccount.dat b/images/release_history_sloccount.dat index 70c4cf428..4ea72fab4 100644 --- a/images/release_history_sloccount.dat +++ b/images/release_history_sloccount.dat @@ -76,3 +76,5 @@ 5.5 773973 07 2022 2022.5 # from CGAL-5.6-beta1 5.6 793150 07 2023 2023.5 +# from CGAL-6.0-beta1 +6.0 810957 07 2024 2024.5 diff --git a/images/release_history_sloccount.plt b/images/release_history_sloccount.plt index 861c290b4..9c3497e81 100644 --- a/images/release_history_sloccount.plt +++ b/images/release_history_sloccount.plt @@ -2,7 +2,7 @@ set terminal pngcairo transparent rounded linewidth 1.5 size 800,400 font "Helvetica,10" set out 'release_history_sloccount.png' -plot [1996.4:2024.0] [0:850000] 'release_history_sloccount.dat'\ +plot [1996.4:2025.0] [0:870000] 'release_history_sloccount.dat'\ using 5:2 with lines notitle,\ '' using 5:2 with points lc rgb "black" pt 7 notitle,\ '' using 5:2:1 with labels offset -1.8,0.9 rotate by -45 notitle diff --git a/images/release_history_sloccount.png b/images/release_history_sloccount.png index dc37eb8af0ed5d96dbe77df525b31a2586f3ede9..44da6e64e8023743987f548c8d228e69469b32ac 100644 GIT binary patch literal 28514 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

832t8LFM8LL>Tl4?Y> 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 b;xzd33C%N%da(fr_&itAcv_-h8S?)C-92Q) literal 28218 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 H(GmX#j&17s From f95dbc8985dbc1ab644f1e824f7fe0fa1ba3f5a8 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 21 Jun 2024 18:21:43 +0200 Subject: [PATCH 2/3] announce the new release --- _posts/2024-06-21-cgal60-beta1.md | 171 ++++++++++++++++++ .../2024-06-21-new-release-cgal6.0-beta1.md | 15 ++ 2 files changed, 186 insertions(+) create mode 100644 _posts/2024-06-21-cgal60-beta1.md create mode 100644 _posts/2024-06-21-new-release-cgal6.0-beta1.md diff --git a/_posts/2024-06-21-cgal60-beta1.md b/_posts/2024-06-21-cgal60-beta1.md new file mode 100644 index 000000000..808109dcf --- /dev/null +++ b/_posts/2024-06-21-cgal60-beta1.md @@ -0,0 +1,171 @@ +--- +layout: post +title: "CGAL 6.0 beta1 released" +description: "CGAL 6.0 beta1" +category: +tags: ["active-beta-release"] +--- +{% include JB/setup %} + + +Download CGAL-6.0-beta1 + + +CGAL-6.0-beta1 documentation + +

CGAL 6.0 offers the following improvements and new functionality over +CGAL 5.6:

+ +
+ +## Changelog + +### General Changes + +- CGAL 6.0 is the first release of CGAL that requires a C++ compiler with the support of C++17 or later. The new list of supported compilers is: + - Visual C++ 15.9, 16.10, 17.0 (from Visual Studio 2017, 2019 and 2022) or later + - Gnu g++ 11.4.0 or later (on Linux or macOS) + - LLVM Clang version 15.0.7 or later (on Linux) + - Apple Clang compiler versions 10.0.1, 12.0.5, and 15.0.0 (on macOS) +- The minimal supported version of Boost is now 1.72.0. +- The CGAL `Core` library is no longer based on GMP, but on [Boost.Multiprecision](https://www.boost.org/doc/libs/1_72_0/libs/multiprecision/doc/html/index.html). Either GMP backend or Boost backend can be used. +- All demos are now based on Qt6. +- **Breaking change**: The CMake file `UseCGAL.cmake` has been removed from CGAL. Usages of the CMake variables `${CGAL_USE_FILE}` and `${CGAL_LIBRARIES}` must be replaced by a link to the imported target `CGAL::CGAL`, for example: `target_link_library(your_target PRIVATE CGAL::CGAL)`. + +### [Kinetic Space Partition](https://doc.cgal.org/6.0/Manual/packages.html#PkgKineticSpacePartition) (new package) + +- This package implements kinetic space partition: based on a set of planar input shapes, the bounding box of the input data is split into convex volumes. The complexity of the partition can be adjusted with a single parameter. + +### [Kinetic Surface Reconstruction](https://doc.cgal.org/6.0/Manual/packages.html#PkgKineticSurfaceReconstruction) (new package) + +- The package implements a piece-wise planar surface reconstruction pipeline from point clouds combining methods from the [Shape Detection](https://doc.cgal.org/6.0/Manual/packages.html#PkgShapeDetection), [Shape Regularization](https://doc.cgal.org/6.0/Manual/packages.html#PkgShapeRegularization) and [Kinetic Shape Partition](https://doc.cgal.org/6.0/Manual/packages.html#PkgKineticSpacePartition) packages and graph-cut to reconstruct surfaces from point clouds. + +### [Basic Viewer](https://doc.cgal.org/6.0/Basic_viewer/index.html#Chapter_Basic_viewer) (new package) + +- The basic viewer package provides interactive visualization for most CGAL packages, such as [2D Arrangements](https://doc.cgal.org/6.0/Manual/packages.html#PkgArrangementOnSurface2), [2D Regularized Boolean Set-Operations](https://doc.cgal.org/6.0/Manual/packages.html#PkgBooleanSetOperations2), [Linear Cell Complex](https://doc.cgal.org/6.0/Manual/packages.html#PkgLinearCellComplex), [3D Boolean Operations on Nef Polyhedra](https://doc.cgal.org/6.0/Manual/packages.html#PkgNef3), [2D Periodic Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgPeriodic2Triangulation2), [3D Point Set](https://doc.cgal.org/6.0/Manual/packages.html#PkgPointSet3), [2D Polygons](https://doc.cgal.org/6.0/Manual/packages.html#PkgPolygon2), [3D Polyhedral Surface](https://doc.cgal.org/6.0/Manual/packages.html#PkgPolyhedron), [2D Straight Skeleton and Polygon Offsetting](https://doc.cgal.org/6.0/Manual/packages.html#PkgStraightSkeleton2), [Surface Mesh](https://doc.cgal.org/6.0/Manual/packages.html#PkgSurfaceMesh), [2D Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgTriangulation2), [3D Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgTriangulation3), [2D Voronoi Diagrams](https://doc.cgal.org/6.0/Manual/packages.html#PkgVoronoiDiagram2), and more. The most simple use case of the basic viewer is the call of the global `CGAL::draw()` function. There is one such `draw()` function for each CGAL package that has a basic viewer. Such a call opens an interactive window showing the given model and allowing to navigate in the scene, show or hide some specific cells, show the interior of the model if any, etc. The `Basic_viewer` is based on Qt6. + +### [Polygon Repair](https://doc.cgal.org/6.0/Manual/packages.html#PkgPolygonRepair) (new package) + +- This package provides algorithms to repair 2D polygons, polygons with holes, and multipolygons with holes, by selecting faces of the arrangement of the input using the odd-even heuristic. + +### [2D and 3D Linear Geometry Kernel](https://doc.cgal.org/6.0/Manual/packages.html#PkgKernel23) + +- **Breaking change**: Replaced all instances of `boost::variant` with `std::variant` in the intersection functions. +- **Breaking change**: Replaced all instances of `boost::optional` with `std::optional` in the intersection functions. + +### [3D Polyhedral Surface](https://doc.cgal.org/6.0/Manual/packages.html#PkgPolyhedron) + +- The demo of this package, also known as “Polyhedron Demo” has been renamed “CGAL Lab” and moved to its own package (“Lab”). + +### [2D and 3D Fast Intersection and Distance Computation (AABB Tree)](https://doc.cgal.org/6.0/Manual/packages.html#PkgAABBTree) + +- The AABB tree can now be used with 2D or 3D primitives: + - The concepts `AABBGeomTraits` and `AABBRayIntersectionGeomTraits` have been replaced by [`AABBGeomTraits_3`](https://doc.cgal.org/6.0/AABB_tree/classAABBGeomTraits__3.html) and by [`AABBRayIntersectionGeomTraits_3`](https://doc.cgal.org/6.0/AABB_tree/classAABBRayIntersectionGeomTraits__3.html), respectively. + - The concepts [`AABBGeomTraits_2`](https://doc.cgal.org/6.0/AABB_tree/classAABBGeomTraits__2.html) and [`AABBRayIntersectionGeomTraits_2`](https://doc.cgal.org/6.0/AABB_tree/classAABBRayIntersectionGeomTraits__2.html) have been introduced, as the 2D counterparts. + - The class [`CGAL::AABB_traits`](https://doc.cgal.org/6.0/AABB_tree/group__PkgAABBTreeRef.html#ga764f0fc59c96355877536810aa1aca5b) is deprecated and replaced by [`CGAL::AABB_traits_3`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__traits__3.html). + - The class [`CGAL::AABB_traits_2`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__traits__2.html) is introduced as the 2D counterpart. + - The class [`CGAL::AABB_segment_primitive`](https://doc.cgal.org/6.0/AABB_tree/group__PkgAABBTreeRef.html#gad0acfd5c4a3c081b7570cc6bd4594c8d) has been deprecated and replaced by the class [`CGAL::AABB_segment_primitive_3`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__segment__primitive__3.html). + - The class [`CGAL::AABB_triangle_primitive`](https://doc.cgal.org/6.0/AABB_tree/group__PkgAABBTreeRef.html#ga54a56f01dc8024624f7d83ee0a01add0) has been deprecated and replaced by the class [`CGAL::AABB_triangle_primitive_3`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__triangle__primitive__3.html). + - The following 2D primitive classes have been added: [`CGAL::AABB_segment_primitive_2`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__segment__primitive__2.html), [`CGAL::AABB_polyline_segment_primitive_2`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__polyline__segment__primitive__2.html), [`CGAL::AABB_triangle_primitive_2`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__triangle__primitive__2.html), [`CGAL::AABB_indexed_triangle_primitive_2`](https://doc.cgal.org/6.0/AABB_tree/classCGAL_1_1AABB__indexed__triangle__primitive__2.html). +- **Breaking change**: The concept [`AABBTraits`](https://doc.cgal.org/6.0/AABB_tree/classAABBTraits.html) now refines the concept [`SearchTraits`](https://doc.cgal.org/6.0/Spatial_searching/classSearchTraits.html). +- **Breaking change**: Replaced all instances of `boost::optional` with `std::optional`. + +### [2D Arrangements](https://doc.cgal.org/6.0/Manual/packages.html#PkgArrangementOnSurface2) + +- **Breaking change**: Replaced all instances of `boost::variant` with `std::variant`. +- **Breaking change**: The type of the result of point location queries has been changed to `std::variant`. Support for the old macro `CGAL_ARR_POINT_LOCATION_VERSION` has been removed. +- **Breaking change**: Eliminated the error-prone C-type casting that was used to define observers. In general, backward compatibility was maintained; however, the class template [`CGAL::Arr_observer`](https://doc.cgal.org/6.0/Arrangement_on_surface_2/group__PkgArrangementOnSurface2Ref.html#ga8019f986f5469920136c4b92290b7b1b) has been replaced by an alias template. (The class `CGAL::Arr_observer` was renamed to [`CGAL::Aos_observer`](https://doc.cgal.org/6.0/Arrangement_on_surface_2/classCGAL_1_1Aos__observer.html)). +- Introduced [`Arr_dcel`](https://doc.cgal.org/6.0/Arrangement_on_surface_2/classCGAL_1_1Arr__dcel.html), which essentially replaces the former `CGAL::Arr_default_dcel`. Backward compatibility was maintained by the introduction of the alias template [`CGAL::Arr_default_dcel`](https://doc.cgal.org/6.0/Arrangement_on_surface_2/group__PkgArrangementOnSurface2DCEL.html#gaf9635869a3794a46d7dcfce63d7de2a6). `CGAL::Arr_dcel`, as opposed to the former `CGAL::Arr_default_dcel` is templated (in addition to the geometry traits) by `Vertex`, `Halfedge`, and `Face` template parameters, and they have default type values. All this enables the layered extension of DCEL records. +- Fixed a bug in the zone construction code applied to arrangements of geodesic arcs on a sphere, when inserting an arc that lies on the identification curve. +- Introduced a new interactive program that demonstrates 2D arrangements embedded on the sphere called `earth`. The program (i) reads a database of all administrative boundaries of the countries in the world, (ii) displays the globe with all countries and land covered by water (which is land not covered by countries) on a window, and (ii) enables interaction with the user. + +### [3D Envelopes](https://doc.cgal.org/6.0/Manual/packages.html#PkgEnvelope3) + +- **Breaking change**: [`Construct_projected_boundary_2`](https://doc.cgal.org/6.0/Envelope_3/classEnvelopeTraits__3.html#ac7b8f72870f0572834a0a3de62c67bc1) in [`EnvelopeTraits_3`](https://doc.cgal.org/6.0/Envelope_3/classEnvelopeTraits__3.html) now uses `std::variant` instead of [`CGAL::Object`](https://doc.cgal.org/6.0/STL_Extension/classCGAL_1_1Object.html). +- Passed the base class of [`CGAL::Env_plane_traits_3`](https://doc.cgal.org/6.0/Envelope_3/classCGAL_1_1Env__plane__traits__3.html) as a template parameter with a default value (being the 2D arrangement linear traits). Similarly, passed the base class of `CGAL::Env_triangle_traits_3` as a template parameter with a default value (being the 2D arrangement segment traits). + +### [Combinatorial Maps](https://doc.cgal.org/6.0/Manual/packages.html#PkgCombinatorialMaps) and [Generalized Maps](https://doc.cgal.org/6.0/Manual/packages.html#PkgGeneralizedMaps) + +- Added the function [`insert_cell_1_between_two_cells_2()`](https://doc.cgal.org/6.0/Combinatorial_map/classGenericMap.html#aa29570a0812094c7876e24a228373f12) to the [`GenericMap`](https://doc.cgal.org/6.0/Combinatorial_map/classGenericMap.html) concept, which enables users to insert an edge between two different faces in order to create faces with holes. + +- Added new meshing criterion `edge_distance`, an upper bound for the distance from the edge to the 1D feature. + +- **Breaking change**: the concept `MeshEdgeCriteria_3` was modified to include the new meshing criterion `edge_distance`. + +### [Quadtrees, Octrees, and Orthtrees](https://doc.cgal.org/6.0/Manual/packages.html#PkgOrthtree) + +- **Breaking change**: + - Node splitting behavior and per-node data are now customizable via the Traits class. + - Nodes are now stored as a property map, with properties of each node accessed by index. + - Nearest neighbors functions only work for Orthtrees which provide the necessary functionality. + +### [CGAL and the Boost Graph Library (BGL)](https://doc.cgal.org/6.0/Manual/packages.html#PkgBGL) + +- Added the function [`CGAL::remove_all_elements()`](https://doc.cgal.org/6.0/BGL/group__PkgBGLHelperFct.html#gac7e199820c95ed1fc6ab536750749358), which removes vertices, halfedges, and faces without collecting garbage and without removing properties. +- [Dynamic property maps](https://doc.cgal.org/6.0/BGL/group__PkgBGLPropertiesDynamic.html) can now have a default value. +- The class [`CGAL::Face_filtered_graph`](https://doc.cgal.org/6.0/BGL/structCGAL_1_1Face__filtered__graph.html) now supports patch IDs of any type and not just `faces_size_type`. The only requirement is that the type is hashable. + +### [Polygon Mesh Processing](https://doc.cgal.org/6.0/Manual/packages.html#PkgPolygonMeshProcessing) + +- Added the function [`CGAL::Polygon_mesh_processing::autorefine_triangle_soup()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PMP__corefinement__grp.html#gaec85370aa0b2acc0919e5f8406cfb74c), which can be used to refine a soup of triangles such that no pair of triangles intersects in their interiors. Also added, the function [`CGAL::Polygon_mesh_processing::autorefine()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PMP__corefinement__grp.html#ga3e3a0a82b6c04bdc3a6c070e8da4aed5) operating directly on a triangle mesh and updating it using the aforementioned function on a triangle soup. +- Added the class [`CGAL::Corefinement::Non_manifold_output_visitor`](https://doc.cgal.org/6.0/Polygon_mesh_processing/structCGAL_1_1Polygon__mesh__processing_1_1Corefinement_1_1Non__manifold__output__visitor.html), which can be used in corefinement based functions to deal with non-manifold outputs. +- Added the option to use a variable sizing field for [`CGAL::Polygon_mesh_processing::isotropic_remeshing()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PMP__meshing__grp.html#ga66cb01cf228ed22f0a2a474cfa2aeb3f), and a sizing function based on a measure of local curvature for adaptive remeshing. +- Added the function [`CGAL::Polygon_mesh_processing::interpolated_corrected_curvatures()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PMP__corrected__curvatures__grp.html#ga22665c9ce92aaedab07df1b05f20bdb2) which can be used to compute the mean and Gaussian curvatures, as well as the principal curvature and directions. +- Added the function [`CGAL::Polygon_mesh_processing::refine_mesh_at_isolevel()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PkgPolygonMeshProcessingRef.html#ga396505d5a60b5f6d29792b214fa59352) which can be used to refine a polygon mesh along an isocurve. +- Added the function [`CGAL::Polygon_mesh_processing::add_bbox()`](https://doc.cgal.org/6.0/Polygon_mesh_processing/group__PkgPolygonMeshProcessingRef.html#gabaf98d2fd9ae599ff1f3a5a6cde79cf3), which enables adding a tight or extended, triangulated or not, bounding box to a face graph. + +### [2D Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgTriangulation2) + +- **Breaking change**: the concept [`TriangulationTraits_2`](https://doc.cgal.org/6.0/Triangulation_2/classTriangulationTraits__2.html) now requires an additional functor `Compare_xy_2`. + +### [3D Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgTriangulation3) + +- Added three member functions [`vertices()`](https://doc.cgal.org/6.0/Triangulation_3/classCGAL_1_1Triangulation__3.html#a02faf334255e1ca8caa1a6f412533759) to the class [`CGAL::Triangulation_3`](https://doc.cgal.org/6.0/Triangulation_3/classCGAL_1_1Triangulation__3.html). Each of them returns an array containing the vertices of the given triangulation simplex. + +### [dD Triangulations](https://doc.cgal.org/6.0/Manual/packages.html#PkgTriangulations) + +- **Breaking change**: `CGAL::TDS_full_cell_mirror_storage_policy` is now unsupported in dimension larger than 127. +- **Breaking change**: Inserting multiple unweighted points in the same position now keeps the first one, instead of switching to the latest. This only affects custom point types where not all points in the same position are equivalent. + +### [Tetrahedral Remeshing](https://doc.cgal.org/6.0/Manual/packages.html#PkgTetrahedralRemeshing) + +- Added a sizing field as new parameter of [`CGAL::tetrahedral_isotropic_remeshing()`](https://doc.cgal.org/6.0/Tetrahedral_remeshing/group__PkgTetrahedralRemeshingRef.html#ga263775c52eeb483a86a16aeb9eb31af0), which can be used to perform non-uniform and adaptive remeshing. +- **Breaking change**: The template parameters of [`CGAL::Tetrahedral_remeshing::Remeshing_cell_base_3`](https://doc.cgal.org/6.0/Tetrahedral_remeshing/classCGAL_1_1Tetrahedral__remeshing_1_1Remeshing__cell__base__3.html) have been modified, reverting changes introduced in CGAL 5.6. +- **Breaking change**: The vertex base of [`CGAL::Tetrahedral_remeshing::Remeshing_vertex_base_3`](https://doc.cgal.org/6.0/Tetrahedral_remeshing/classCGAL_1_1Tetrahedral__remeshing_1_1Remeshing__vertex__base__3.html) must now be a model of the concept [`SimplicialMeshVertexBase_3`](https://doc.cgal.org/6.0/SMDS_3/classSimplicialMeshVertexBase__3.html) (and not only [`TriangulationVertexBase_3`](https://doc.cgal.org/6.0/Triangulation_3/classTriangulationVertexBase__3.html)). + +### [3D Simplicial Mesh Data Structure](https://doc.cgal.org/6.0/Manual/packages.html#PkgSMDS3) + +- **Breaking change**: The template parameters of [`CGAL::Simplicial_mesh_cell_base_3`](https://doc.cgal.org/6.0/SMDS_3/classCGAL_1_1Simplicial__mesh__cell__base__3.html) have been modified to enable passing a geometric traits and a custom cell base class. + +### [3D Mesh Generation](https://doc.cgal.org/6.0/Manual/packages.html#PkgMesh3) + +- **Breaking change**: Removed the concept `TriangleAccessor`, the template parameter `TriangleAccessor`, as well as the class `Triangle_accessor`. These were no longer used for several releases. +- **Breaking change**: Removed the class templates `CGAL::Gray_image_mesh_domain_3`, `CGAL::Implicit_mesh_domain_3`, and `CGAL::Labeled_image_mesh_domain_3`, which were deprecated since CGAL-4.13. + +### [3D Surface Mesh Generation](https://doc.cgal.org/6.0/Manual/packages.html#PkgSurfaceMesher3) + +- This package is deprecated and the package [3D Mesh Generation](https://doc.cgal.org/6.0/Manual/packages.html#PkgMesh3) should be used instead. + +### [Surface Mesh Parameterization](https://doc.cgal.org/6.0/Manual/packages.html#PkgSurfaceMeshParameterization) + +- **Breaking change**: The method [`CGAL::Surface_mesh_parameterization::LSCM_parameterizer_3`](https://doc.cgal.org/6.0/Surface_mesh_parameterization/classCGAL_1_1Surface__mesh__parameterization_1_1LSCM__parameterizer__3.html) now requires the Eigen library. +- **Breaking change**: CGAL no longer ships its own version of OpenNL. + +### [Surface Mesh](https://doc.cgal.org/6.0/Manual/packages.html#PkgSurfaceMesh) + +- **Breaking change**: The return type of [`CGAL::Surface_mesh::property_map()`](https://doc.cgal.org/6.0/Surface_mesh/classCGAL_1_1Surface__mesh.html#afc99c7ea179dc1c21a2ab59ed183184a) has been changed to `std::optional`. + +### [3D Point Set](https://doc.cgal.org/6.0/Manual/packages.html#PkgPointSet3) + +- **Breaking change**: The return type of [`CGAL::Point_set_3::property_map()`](https://doc.cgal.org/6.0/Point_set_3/classCGAL_1_1Point__set__3.html#a571ecc603cd32d78c7effaf86fe120ad) has been changed to `std::optional`. + +### [Shape Detection](https://doc.cgal.org/6.0/Manual/packages.html#PkgShapeDetection) + +- **Breaking change**: Replaced all instances of `boost::shared_ptr` with `std::shared_ptr`. + +### [2D Straight Skeleton and Polygon Offsetting](https://doc.cgal.org/6.0/Manual/packages.html#PkgStraightSkeleton2) + +- **Breaking change**: Replaced all instances of `boost::shared_ptr` with `std::shared_ptr`. +- **Breaking change**: Replaced all instances of `boost::optional` with `std::optional`. + +
diff --git a/_posts/2024-06-21-new-release-cgal6.0-beta1.md b/_posts/2024-06-21-new-release-cgal6.0-beta1.md new file mode 100644 index 000000000..664fcc193 --- /dev/null +++ b/_posts/2024-06-21-new-release-cgal6.0-beta1.md @@ -0,0 +1,15 @@ +--- +layout: post +title: "New release 6.0 beta 1" +description: "CGAL-6.0-beta1 is the first beta release for CGAL-6.0" +category: "news" +tags: [""] +--- +{% include JB/setup %} + +
+The CGAL Open Source Project is pleased to announce the [release 6.0 beta 1](/2024/06/21/cgal60-beta1) of CGAL, the Computational Geometry Algorithms Library. + +CGAL version 6.0 beta 1 is a public testing release. It should provide a solid ground to report bugs that need to be tackled before the release of the final version of CGAL 6.0 in July 2024. + +
From d77a332a64ecec67f2022c3b1cccfa5b3e3672d9 Mon Sep 17 00:00:00 2001 From: Laurent Rineau Date: Fri, 21 Jun 2024 18:30:50 +0200 Subject: [PATCH 3/3] fix link --- _posts/2024-06-21-cgal60-beta1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2024-06-21-cgal60-beta1.md b/_posts/2024-06-21-cgal60-beta1.md index 808109dcf..e6c6c2a4a 100644 --- a/_posts/2024-06-21-cgal60-beta1.md +++ b/_posts/2024-06-21-cgal60-beta1.md @@ -14,7 +14,7 @@ tags: ["active-beta-release"] CGAL-6.0-beta1 documentation

CGAL 6.0 offers the following improvements and new functionality over -CGAL 5.6:

+CGAL 5.6: