CGAL 3.8 offers the following improvements and new functionality over CGAL 3.7:

## Changelog

### General

- Boost version 1.39 (or later) is now required.
- Initial support for the LLVM Clang compiler (prereleases of version 2.9).
- Full support for the options -strict-ansi of the Intel Compiler 11, and -ansi of the GNU g++ compiler.
- Added a concept of ranges. In the following releases, it will be the way to provide a set of objects (vs. a couple of iterators).
- Fixed a memory leak in CORE polynomials.
- Various fixes in the manual.

### 3D Mesh Generation (major new feature added)

- Adding the possibility to handle sharp features: the 3D Mesh generation package now offers the possibility to get in the final mesh an accurate representation of 1-dimensional sharp features present in the description of the input domain.

### 2D Triangulations (major new feature added)

- Added a way to efficiently insert a range of points with information into a 2D Delaunay and regular triangulation.
- Added member function
`mirror_edge()`

taking an edge as parameter. - Fixed an infinite loop in constrained triangulation.

### 3D Triangulations (major new feature added)

- Added a way to efficiently insert a range of points with information into a 3D Delaunay and regular triangulation.
- Added a member function to remove a cluster of points from a Delaunay or regular triangulation.
- The function
`vertices_in_conflict()`

is renamed`vertices_on_conflict_zone_boundary()`

for Delaunay and regular triangulation. Function`vertices_inside_conflict_zone()`

is added to regular triangulation. - Structural filtering is now internally used in the
`locate()`

function of Delaunay and regular triangulation. It improves average construction time by 20%. - Added demo.

### 3D Alpha Shapes (major new feature added)

- The new class
`Fixed_alpha_shape_3`

provides a robust and faster way to compute one alpha shape (with a fixed value of alpha).

### AABB tree

- Adding the possibility to iteratively add primitives to an existing tree and to build it only when no further insertion is needed.

### 2D and 3D Kernel

- Better handling of 2D points with elevation (3D points projected
onto trivial planes). More general traits classes (
`Projection_traits_xy_3`

,`Projection_traits_yz_3`

,`Projection_traits_yz_3`

) are provided to work with triangulations, algorithms on polygons, alpha-shapes, convex hull algorithmâ€¦ Usage of former equivalent traits classes in different packages is now deprecated. `Exact_predicates_exact_constructions_kernel`

now better use the static filters which leads to performance improvements.- Add an overload for the global function angle, taking three 3D points.
- In the 2D and 3D kernel concept, the constant Boolean
Has_filtered_predicates is now deprecated. It is now required to
use Has_filtered_predicates_tag (being either
`Tag_true`

or`Tag_false`

). `Compare_distance_2`

and`Compare_distance_3`

provide additional operators for 3 and 4 elements.- Add intersection test and intersection computation capabilities
between an object of type
`Ray_3`

and either an object of type`Line_3`

,`Segment_3`

or`Ray_3`

. - Improve intersection test performance between an object of type
`Bbox_3`

and an object of type`Plane_3`

or`Triangle_3`

by avoiding arithmetic filter failures.

### 2D Envelope

- Env_default_diagram_1 is deprecated, Envelope_diagram_1 should be used instead.

### 3D Envelope

- A new demo program called
`L1_Voronoi_diagram_2`

has been introduced. It demonstrates how 2D Voronoi diagrams of points under the L1 metric are constructed using lower envelopes.

### dD Kernel

- Added functor
`Compute_coordinate_d`

to the`Kernel_d`

concept.

### Geometric Object Generators

`CGAL::Random`

uses`boost::rand48`

instead of`std::rand`

.- Added to
`CGAL::Random`

a way to generate random integers. - Added generators for dD points.

### Algebraic Foundations

`Algebraic_structure_traits`

now provides an Inverse functor for Fields. There is also a new global function inverse.

### Bounding Volumes

- dD Min sphere of spheres has a new traits class for the min sphere of points.

### Triangulated Surface Mesh Simplification

- The priority queue internally used to prioritize edge simplifications is no longer a relaxed heap but a binomial heap. This fix guarantees that all edges satisfying a simplification criteria are removed (if possible).

### 3D Boolean Operations on Nef Polyhedra

- Allow construction of a 3D nef polyhedron from a 3D polyhedron with normals.

### 2D Arrangements

- Fixe a bug in the method insert_at_vertices of the
`Arrangement_2`

class. - Fixed several bugs in the traits class
`Arr_Bezier_curve_traits_2`

for arrangement of Bezier curves.

### 2D Minkowski Sums

- A bug in the convolution method was fixed.