CGAL 4.0 offers the following improvements and new functionality:
License Changes
The whole CGAL3.x series was released under a combination of LGPLv2 (for the foundations of CGAL), and QPL (for the highlevel packages). QPL was the former license of the graphical toolkit Qt, but that license is not supported by any major free software project. Furthermore, the terms of the LGPLv2 license are ambiguous for a library of C++ templates, like CGAL.
The CGAL project, driven by the CGAL Editorial Board, has decided to change the license scheme of CGAL. We increased the major number of the CGAL version to '4' in order to reflect this license change. The CGAL4.x series is released under:
 LGPLv3+ (that is LGPL "either version 3 of the License, or (at your option) any later version"), for the foundations of CGAL, instead of LGPLv2,
 GPLv3+ for the highlevel packages, instead of QPL.
General
 On Windows, CGAL libraries are now built by default as shared libraries (also called DLL). To run applications that use .dll files of CGAL, you must either copy the .dll files into the directory of the application, or add the path of the directory that contains those .dll files into the PATH environment variable.
 On Windows, the CMake scripts of CGAL now search for shared version of the Boost libraries. You must ensure that the .dll files of Boost are found by the dynamic linker. You can, for example, add the path to the Boost .dll files to the PATH environment variable.
 On Windows, CMake version 2.8.6 or higher is now required.
 Eigen version 3.1 or later is now the recommended third party library to use in Planar Parameterization of Triangulated Surface Meshes, Surface Reconstruction from Point Sets, Approximation of Ridges and Umbilics on Triangulated Surface Meshes, and Estimation of Local Differential Properties of PointSampled Surfaces packages. If you use Eigen you no longer need Taucs, Lapack or Blas to use those packages (and any other in CGAL).
Linear Cell Complex (new package)
 This package implements linear cell complexes, objects in
ddimension with linear geometry. The combinatorial part of
objects is described by a combinatorial map, representing all the
cells of the object plus the incidence and adjacency relations
between cells. Geometry is added to combinatorial maps simply by
associating a point to each vertex of the map. This data
structure can be seen as the generalization in dD of the
Polyhedron_3
.
2D Voronoi Diagram Adaptor (temporarily removed)
 As the copyright holder of this package has not granted the right to switch from QPL to GPL, this package is removed from the distribution. Note that it is "only" an adapter, that is the functionality of point/segment/disk Voronoi diagram is offered through the Delaunay triangulation, segment Delaunay graph, and Apollonius graph.
AABB Tree
 Document constness of member functions of the
AABB_tree
class.  The class
AABB_tree
is now guaranteed to be readonly threadsafe. As usual in CGAL, this small overhead introduced for threadsafety can be deactivated by definingCGAL_HAS_NO_THREADS
.
2D Alpha Shapes
 Add an extra template parameter to the class
Alpha_shape_2
that allows a certified construction using a traits class with exact predicates and inexact constructions.  An object of type
Alpha_shape_2
can now be constructed from a triangulation.
3D Alpha Shapes
 Add an extra template parameter to the class
Alpha_shape_3
that allows a certified construction using a traits class with exact predicates and inexact constructions.
Geometric Object Generators

Random_points_in_iso_box_d
(deprecated since 3.8) has been removed. UseRandom_points_in_cube_d
instead.
Linear and Quadratic Programming Solver
 Minor bugfix.
Spatial Searching
 The constcorrectness of this package have been worked out. The transition for users should be smooth in general, however adding few const in user code might be needed in some cases.
 The class
Kd_tree
is now guaranteed to be readonly threadsafe. As usual in CGAL, this small overhead introduced for threadsafety can be deactivated by definingCGAL_HAS_NO_THREADS
.  Bugfix in
Orthogonal_incremental_neighbor_search
andIncremental_neighbor_search
classes. Several calls tobegin()
now allow to make several nearest neighbor search queries independently.
STL Extension
CGAL::copy_n
is now deprecated forCGAL::cpp0x::copy_n
which usesstd::copy_n
, if available on the platform.CGAL::successor
andCGAL::predecessor
are now deprecated forCGAL::cpp0x::next
andCGAL::cpp0x::prev
. These functions use the standard versions if available on the platform. Otherwise,boost::next
andboost::prior
are used.
Triangulation_2
 Fix a threadsafety issue in
Delaunay_triangulation_2
remove functions. As usual in CGAL, the small overhead introduced for threadsafety can be deactivated by definingCGAL_HAS_NO_THREADS
.  Add extraction operator for the class
Constrained_triangulation_2
(and thus to all inheriting classes).