Link to the CGAL4.8 documentation
General
 The support for Qt3 is dropped and all demos using it got removed.
Installation
 Starting with Visual C++ 2015 we no longer
require
Boost.Thread
as we use the C++11 keywordthread_local
and the C+11 classstd::mutex
.  The same holds for g++ 4.8 or later when the C++11 standard is used.
Optimal Transportation Curve Reconstruction (new package)
 This package implements a method to reconstruct and simplify 2D point sets. The input is a set of 2D points with mass attributes, possibly hampered by noise and outliers. The output is a set of line segments and isolated points which approximate the input points.
2D Regularized Boolean SetOperations
 Improve the performance of operations in some settings.
Breaking change: This improvement requires changes of the face and halfedge type of the underlying arrangement Dcel. See the conceptsGeneralPolygonSetDcelHalfedge
andGeneralPolygonSetDcelFace
for more details. If you use a different simplex types, inheriting your simplices fromCGAL::Gps_face_base
andCGAL::Gps_halfedge_base
is sufficient to accommodate for the update.
3D Boolean Operations on Nef Polyhedra
 Add 3 new constructors: from a point range, from a point, and from a segment.
Combinatorial Maps
 Breaking change: Change the type of Boolean marks, old type
is int, new type is
size_type
. If no more mark is available,get_new_mark
throws an exception, instead of returning1
.
2D Arrangements
 Speed up the edge removal in case the incident faces contains many holes.
 Set the format of polylines and polycurves. The format of a general polyline or polycurve consists of the sequence of subcurves that comprise the original curve. The format of a polyline of linear segments consists of the sequence of points that define the original curve. (The latter restores the format used before polycurves were introduced in 4.7.) Fix the extraction from istream and insertion into ostream operators of polylines and polycurves accordingly.
 Fix the traits class that handles Bezier curves. In particular, fix the case where the curve is closed (i.e, the first and last control points coincide).
3D Mesh Generation
 Add support of 3D gray level images as input for the tetrahedral mesh generation.
 Breaking change: All models of the
concept
MeshDomain_3
must now provide a member functionbbox()
.
Advancing Front Surface Reconstruction
 Optional template functor
Filter
is replaced by another optional template functorPriority
. This allows to change the way facets are prioritized by the algorithm instead of having a simple option to reject some facets.
Breaking change: Programs using the oldFilter
API will not compile anymore as it must be replaced with thePriority
API as described in the manual. Codes using the default behavior are not impacted.
Polygon Mesh Processing
 Add a new trianglebased isotropic remeshing algorithm for
triangulated surface meshes,
CGAL::Polygon_mesh_processing::isotropic_remeshing()
and a helper function for isotropic remeshing :CGAL::Polygon_mesh_processing::split_long_edges()
 Add the
function
CGAL::Polygon_mesh_processing::border_halfedges()
to collect the border of a given face range  Add the
function
CGAL::Polygon_mesh_processing::remove_isolated_vertices()
to be used on any polygon mesh  Add the
function
CGAL::Polygon_mesh_processing::triangulate_face()
to triangulate a single face of a polygon mesh  Add an overload
for
CGAL::Polygon_mesh_processing::triangulate_faces()
to triangulate a range of faces of a polygon mesh  Add function
keep_large_connected_components()
 Add measuring functions for polygon meshes, to compute length, area, and volume of simplices or group of simplices of a polygon mesh.
 Add function
bbox_3()
to compute the bounding box of a polygon mesh.
Surface Mesh Parameterization
LSCM_parameterizer_3
now uses by default Eigen instead of OpenNL as a model ofSparseLinearAlgebraTraits_d
.
Point Set Processing
 Breaking change: new template
parameter
Concurrency_tag
for the functionscompute_average_spacing()
,edge_aware_upsample_point_set()
,jet_estimate_normals()
,jet_smooth_point_set()
, andpca_estimate_normals()
. To update your code simply add as first template parameterCGAL::Sequential_tag
orCGAL::Parallel_tag
when calling one of these functions. 
CGAL::Parallel_tag
can no longer be used in Point Set Processing algorithms if TBB is not available. 
Add a new simplification algorithm based on hierarchical
clustering:
CGAL::hierarchy_simplify_point_set()
. It allows either to uniformly simplify the point set or to automatically adapt the local density of points to the local variation of the input computed by principal component analysis.  New IO functions for PLY format (Polygon File
Format):
CGAL::read_ply_points()
,CGAL::read_ply_points_and_normals()
,CGAL::write_ply_points()
andCGAL::write_ply_points_and_normals()
.
Surface Mesh Parameterization
LSCM_parameterizer_3
now uses by default Eigen instead of OpenNL as a model ofSparseLinearAlgebraTraits_d
.
Spatial Searching
 Add function to find any point in a range query, that is neither all points, nor the closest one.
Principal Component Analysis

Add a template parameter
DiagonalizeTraits
for functionsCGAL::linear_least_squares_fitting_2()
andCGAL::linear_least_squares_fitting_3()
. This allows to either choose the legacy internal diagonalization code from CGAL or the Eigen implementation (or any class that is a model ofDiagonalizeTraits
). Variants of the function that automatically deduce the kernel also automatically select the diagonalizer, so the API is mostly preserved.
CGAL and Solvers
 This package now includes all CGAL concepts for solvers with models using the third party Eigen library.
CGAL and the Boost Graph Library (BGL)
 Add function
CGAL::split_graph_into_polylines()
that allows to extract from a soup of segments given as a graph, polylines with nodes of degree at most 2. In addition a functor can be passed to the function to specify additional polyline endpoints. 
New functions to manipulate selection of faces, edges and vertices in
a halfedge graph are added:
CGAL::expand_face_selection()
,CGAL::reduce_face_selection()
,CGAL::expand_edge_selection()
,CGAL::reduce_edge_selection()
CGAL::expand_vertex_selection()
,CGAL::reduce_vertex_selection()
andCGAL::select_incident_faces()
. 
Add a class
CGAL::Dual
that creates the dual view of aFaceGraph
and a creation functionCGAL::dual(primal)
. 
Add a helper function
CGAL::clear
which clears a MutableFaceGraph efficiently and generically.