Stub 3.5.0 section
[geos.git] / NEWS
blob6de493cc0268cc4a7bc1ca89eb6821e62943fe08
1 Changes in 3.5.0
2 2013-MM-DD
4 - New things:
5   ...
7 Changes in 3.4.0
8 2013-08-11
10 - New things:
11   - Delaunay Triangulation API (#487, #565, #570, #567)
12   - Interruptibility API (C and C++)
13   - CAPI: GEOSNode (#496) - PHP: Geometry->node
14   - GeometryPrecisionReducer class (#496, #526)
15   - BufferInputLineSimplifier header exposed (#548)
16   - New Centroid class supporting mixed geometry components (#612)
17   - io::Writer::reserve() method
18   - CAPI: GEOSNearestPoints
19   - Add --cclibs, --static-clibs and --static-cclibs to geos-config (#497)
20   - Early bail out of overlay exception if input is invalid
22 - C++ API changes:
23   - New noding::GeometryNoder class
24   - Added BufferOp::setSingleSided 
25   - Signature of most functions taking a Label changed to take it
26     by reference rather than pointer.
27   - Signature of most functions taking an IntersectionMatrix changed
28     to take it by reference rather than pointer.
29   - GraphComponent::label is now a Label value (from a pointer)
30   - NodedSegmentString takes ownership of CoordinateSenuence now
31   - io::Writer's toString() returns by const ref, write() takes a const ref
32   - Unify prototypes of WKTReader and WKBReader constructor (#310) 
33   - GeometryCollection::computeEnvelopInternal and 
34     GeometryCollection::compareToSameClass are marked virtual (#478)
35   
36 - Bug fixes / improvements
37   - A point interpolated from a line does not always intersect 
38     the same line (#323) 
39   - Port ConvexHull robustness fix from JTS-1.13 (#457)
40   - Improve Overlay robustness by reducing input precision on topology
41     exception and by refusing to accept unnoded output (#459)
42   - Improve Buffer robustness by reducing input precision on topology
43     exception (#605)
44   - Mismatch segment sides in OffsetCurveBuilder (#633 )
45   - Fixed Linear Referencing API to handle MultiLineStrings consistently
46     by always using the lowest possible index value, and by trimming
47     zero-length components from results (#323)
48   - Fixed CMake configuration to set correct SOVERSION (current - age)
49   - Fix EMPTY return from single-point lines and zero-length polygons (#612)
50   - CMakeLists.txt, tools/geos_svn_revision_cmake.h.in: Add
51           geos_svn_revision.h generator to CMake config (#643)
52         - Makefile.vc 'clean' step leaks obj files (#607) 
53   
54 Changes in 3.3.8
55 2013-02-28
57 - Bug fixes / improvements
58     - IsValidOp: throw proper error on nested shells (#608)
59     - Fix header guards (#617, #618, #619)
60     - WKTWriter::appendCoordinate optimisation
61     - Fix centroid computation for collections with empty components (#582)
63 Changes in 3.3.7
64 2013-01-22 
66 - Bug fixes / improvements
67     - Fix abort in RightmostEdgeFinder (#605)
68     - Do not force precision reduction below 6 significant digits
69       while trying to obtain a valid Buffer output (#605)
70     - Fix GEOSPointOnSurface with zero-length linestring (#609)
71     - Fix EMPTY return from zero-area polygon (#613)
72     - Segfault from symdifference (#615)
74 Changes in 3.3.6
75 2012-11-15 -- that's Post-GIS day !
77 - Bug fixes / improvements
78     - Add support for testing with phpunit 3.6 (not loosing support for 3.4)
79     - Segfault from intersection (#586, #598, #599)
81 Changes in 3.3.5
82 2012-06-25
84 - Bug fixes / improvements
85     - Correctly increment CAPI lib version from 3.3.3 (#558)
86     - Port robustness fix to CentroidArea (#559)
87     - Always return POINT from GEOSGetCentroid, even for EMPTY (#560)
88     - Always return POINT from GEOSPointOnSurface, even for EMPTY (#561)
90 Changes in 3.3.4
91 2012-05-31
93 - Bug fixes / improvements
94     - Do not abort on NaN overlay input (#530)
95     - Reduce CommonBitsRemover harmful effects during overlay op (#527)
96     - Better cross-compiler support (#534)
97     - Enable overlay ops short-circuits (#542)
98     - Envelope-based short-circuit for symDifference (#543)
99     - Fix support for PHP 5.4 (#513)
100     - Fix TopologyPreservingSimplifier invalid output on closed line (#508)
101     - Reduce calls to ptNotInList, greatly speeding up Polygonizer (#545)
103 Changes in 3.3.3
104 2012-04-01
106 - Bug fixes / improvements
107     - Fix simplification of collections with empty items (#519)
108     - Fix MSVC compilation of ambiguous log() call (#506)
109     - Fix CMake issues with std:: namespace detection (#493)
111 Changes in 3.3.2
112 2012-01-05
114 - Bug fixes / improvements
115     - Fix CMAKE_CXX_FLAGS overriding -std=gnu++0x (#489)
116     - Missing versions update in CMake configuration (#490)
117     - Fix noding of self-intersecting lines through UnaryUnion (#482)
118     - Fix handling of collapsed edges skipping in BufferOp (#494)
119     - Print up to 18 digits of precision for TopologyException points
120     - Fix noding with reduced precision in Buffer operation (#473)
121     - Fix HotPixel original point invalidation (#498)
122     - Fix CascadedPolygonUnion to discard non-polygonal components (#499)
123     - Improve buffer robustness by reverting to non-snaprounding noder (#495)
124     - Fix C++11 build by avoiding std::pair<auto_ptr> (#491)
125     - Add --clibs to geos-config and GEOS_C_LIBS to geos.m4 (#497)
126     - Apply shoelace formula for area calculation (#485)
127     - Fix default initialization issue for clang (#500)
128     - Improve overlay robustness by fixing areal validity on snapping (#488)
130 Changes in 3.3.1
131 2011-09-27
133 - Bug fixes / improvements
134   - Fix memory leak on invalid geometry in InteriorPointArea (#475)
135   - ValidOp abort in presence of 2 touching holes forming an island (#449)
136   - Enable prepared intersects operation for points
137   - Fortify suspicious code found by static analisys tools
138   - Fix for SOLARIS build (#461)
139   - Fix EMPTY result from GEOSOffsetCurve with distance 0 (#454)
140   - Fix Geometry::clone to copy SRID (#464)
141   - Fix for clang builds (#463)
142   - Fix out-of-place builds for python binding (#332) and regress testing
143   - Fix OS X framework cmake build (#385)
145 Changes in 3.3.0
146 2011-05-30
148 - New things:
149   - CAPI: GEOSBufferWithParams (allows single sided buffers)
150   - CAPI: GEOSOffsetCurve deprecates GEOSSingleSidedBuffer
151   - CAPI: GEOSUnaryUnion deprecates GEOSCascadedUnion
152   - CAPI: GEOSisValidDetail: tell state, reason & location apart. allows
153           passing flags.
154   - CAPI: GEOSContext_setNoticeHandler_r, GEOSContext_setErrorHandler_r
155   - CAPI: GEOSGeom_createEmptyPoint, GEOSGeom_createEmptyLineString
156           GEOSGeom_createEmptyPolygon, GEOSGeom_createEmptyCollection
157   - CAPI: GEOSGeom_extractUniquePoints
158   - CAPI: GEOSGetGeometryN support for single geometries
159   - CAPI: GEOSPolygonize_full to return all informations computed by
160           the polygonizer
161   - CAPI: GEOSOrientationIndex
162   - CAPI: GEOSSharedPaths to find shared paths and their orientation
163   - CAPI: GEOSSnap 
164   - CAPI: GEOSRelatePatternMatch 
165   - CAPI: GEOSCovers, GEOSCoveredBy (#396) 
166   - CAPI: GEOSRelateBoundaryNodeRule (#399) 
167   - CAPI: GEOSGeom_getCoordinateDimension() (#311)
168   - CAPI: GEOSWKTWriter_setOutputDimension, GEOSWKTWriter_setOld3D (#292)
169   -  PHP: new PHP5 bindings based on CAPI
170 - Semantic C++ API changes:
171   - Geometry inheritance chain changed to introduce Puntal, Lineal
172     and Polygonal classes (virtual inheritance introduced)
173   - Polygonizer::getInvalidRingLines retains ownership of vector elements
174   - Geometry::isWithinDistance method is now const
175   - Polygonizer::getCutEdges returns by const ref
176   - Polygonizer::getDangles returns by const ref
177   - Empty LinearRings are closed by definition
178 - Bug fixes / improvements
179   - Fixed Geometry.distance() and DistanceOp to return 0.0 for empty inputs
180   - Invalid compound geometries reported as valid (#333)
181   - Return up to 15 digits of precision from GEOSisValidReason_t (#329)
182   - CAPI: do not leak contexts when using the non-reentrant interface
183   - Fix duplicated dangles returned by Polygonizer
184   - Fix SnapIfNeededOverlayOp to throw the originating exception
185   - Fixed LineMerger to skip lines with only a single unique coordinate
186   - Fix NodedSegmentString to handle zero-length line segments correctly
187     (via safeOctant)
188   - Fixed buffer OffsetCurveSetBuilder to handle "flat" rings correctly
189   - Added illegal state check in LineSegment::pointAlongOffset() 
190   - Improved performance of RectangleIntersects by always using
191     segment-scanning and refining SegmentIntersectionTester
192   - Reduce memory use in PreparedGeometry predicates (#342)
193   - Fix infinite loop in RobustDeterminant with nan/inf input (#357)
195 Changes in 3.2.0 
196 2009-12-14
198 - Add Single-sided buffer operation
199 - JTS-1.10 sync ...
200   - Drastically improved Buffer speed (20x for a case in testsuite)
201   - Improved EdgeList duplicate edge finding
202   - Added algorithm::distance package
203   - Added algorithm::Angle class
204   - Added algorithm::BoundaryNodeRule class
205   - IsSimpleOp can now return non-simple location coordinate
206   - DistanceOp can now check for 'within distance' predicate
207     (earlier exit)
208   - MultiPolygon::getBoundary always return MultiLineString, also
209     when the result is the EMPTY geometry.
210 - Various bug and leak fixes, optimizations
211 - Replace MarkupSTL with tinyXML
213 Changes in 3.1.0
215 - PreparedGeometry operations for very fast predicate testing.
216   - Intersects()
217   - Covers() 
218   - CoveredBy()
219   - ContainsProperly()
220 - Easier builds under MSVC and OpenSolaris
221 - Thread-safe CAPI option
222 - IsValidReason added to CAPI
223 - GEOSPolygonizer_getCutEdges added to CAPI
224 - CascadedUnion operation for fast unions of geometry sets
225 - Numerous bug fixes.
226   http://trac.osgeo.org/geos/query?status=closed&milestone=3.1.0&order=priority
228 Changes in 3.0.0
230    These are mostly ABI breaking changes.
231    In few cases the API also changed, but the most external one
232    (the documented one) should be unchanged.
234 - New things:
235         - Added geom::BinaryOp class performing a binary operation
236           using different heuristics to reduce probability of robustness
237           issues. Both C-API and XMLTester now use this class for
238           binary operations.
239         - Added covers() and coveredBy() predicates to Geometry class
240         - Added overlay::overlayOp() adapter class
241         - Added GEOSSimplify() and GEOSTopologyPreserveSimplify()
242           to the C API
243         - Added closed ring checks in IsValidOp
244         - Multi-input support in XMLTester 
245         - HEXWKB I/O
246         - Envelope(string) ctor
247         - Ruby interface
248         - New ShortCircuitedGeometryVisitor class
249         - New operation/predicate package
250         - Added CGAlgorithms::isPointInRing() version working with
251           Coordinate::ConstVect type (faster!)
252         - Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence
253           class.
254         - Moved GetNumGeometries() and GetGeometryN() interfaces
255           from GeometryCollection to Geometry class.
256         - New planarSubgraph class
257         - New ConnectedSubgraphFinder class.
258         - New LineSequencer class
259         - New WKTWriter::toLineString and ::toPoint convenience methods
260         - New IsValidOp::setSelfTouchingRingFormingHoleValid method
261         - New WKTWriter::toLineString and ::toPoint convenience methods
262         - New IsValidOp::setSelfTouchingRingFormingHoleValid method
263         - New Envelope::centre()
264         - New Envelope::intersection(Envelope)
265         - New Envelope::expandBy(distance, [ydistance])
266         - New LineString::reverse()
267         - New MultiLineString::reverse()
268         - New Geometry::buffer(distance, quadSeg, endCapStyle)
269         - New SnapRounding code
270         - New size() and operator[] interfaces to CoordinateSequence
271         - New ScaledNoder class
272         - New unit tests (make check rule)
274 - Optimizations:
275         - WKT parser speedup
276         - Function inlining
277         - Coordinate copies reduction
278         - Heap allocations reduction
279         - More classes made final
280         - Better use of standard containers
281         - Use of singletons when appropriate
282         - Removed many function calls in loops' end conditions
283         - Improved XMLTester output and user interface
284         - Improved memory use in geos::geom::util::PolygonExtractor
285         - Ported JTS-1.7 version of ConvexHull with big attention to
286           memory usage optimizations.
287         - Changed CoordinateArrayFilter to reduce memory copies
288         - Changed UniqueCoordinateArrayFilter to reduce memory copies
289         - Added rectangle-based optimizations of intersects() and
290           contains() ops
291         - Inlined all planarGraphComponent class
292         - More iterators returning methods and inlining in planargraph.
293         - Obsoleted toInternalGeometry/fromInternalGeometry 
294         - Improved buffering speed and robustness by using Snap Rounding
296 - Semantic changes
298         - SegmentString: getCoordinates() doesn't return a clone
299           anymore, getCoordinatesRO() obsoleted.
300         - JTS packages mapped to geos:: sub-namespaces
301         - Geometry::getInteriorPoint() returns NULL if called
302           against an EMPTY geom
303         - LineString::get{Start,End}Point return NULL for
304           EMPTY geoms
305         - GEOSException is now derived by std::runtim_exception
306           and thrown by const reference.
307         - Geometry constructors made protected, to force use
308           of a GeometryFactory.
310 - Correctness:
311         - More const-correct signatures
312         - Stronger methods typing (removed some void * args).
313         - Changed index-related funx signatures to use size_t
314           rather then int
315         - More const-correctness in Buffer "package"
316         - Bugfix in LineString::getCoordinate() failing to return
317           NULL from getCoordinat() when empty.
318         - Use unsigned int for indexes and sizes.
320 - Layout changes:
321         - Namespaces mapping JTS packages
322         - Renamed classes after JTS names (namespaces use made this possible
323           w/out name clashes)
324         - Splitted headers, for build speedup and possible API reduction.
325         - Moved source/bigtest and source/test to tests/bigtest
326           and test/xmltester
327         - Moved C-API in it's own top-level dir capi/
328         - Reworked automake scripts to produce a static lib for each subdir
329           and then link all subsystem's libs togheter
330         - Renamed DefaultCoordinateSequence to CoordinateArraySequence.
331         - Renamed OverlayOp opcodes by prepending the 'op' prefix, and
332           given the enum a name (OpCode) for type-safety.
334 - Bug fixes:
335         - Fixed bug causing redundant linestrings to be returned in the
336           result of overlaying polygons containing touching holes (#13)
337         - Fixed integer conversion bug
338         - Fixed PointLocator handling of LinearRings
339         - Added missing ::clone() methods for Multi* geoms 
341 - (Partial) Detailed list of changes:
342         - Changed SegmentNode to contain a *real* Coordinate (not a pointer)
343           to reduce construction costs.
344         - Changed geomgraph nodeMap to use Coordinate pointers as keys
345         - Envelope destructor made non-virtual to give compiler more static
346           binding options.
347         - Changed BufferSubgraph::computeDepths to use a set instead of a
348           vector for checking visited Edges.
349         - Made LineIntersector a concrete type
350         - Node::isIncidentEdgeInResult() method made virtual
351         - Const-correct signatures in LineMerger package
352         - Changed operation/valid/*NestedRingTester classes interface
353           to use Coordinate pointers instead of copies.
354         - Changed EdgeIntersectionList to use a set instead of a vector
355         - Changed DepthSegment to store a real Coordinate rather then a pointer.
356         - Changed SubgraphDepthLocater to store real containers rather then
357           pointers.
358         - Changed BufferSubgraph to store a real RightmostEdgeFinder and real
359           containers rather then pointers.
360         - CoordinateSequence API changes:
361                 - point index and size related functions
362                   use unsigned int rather then int
363         - Changed EdgeEndStar to maintain a single container for EdgeEnds 
364         - Changed PlanarGraph::addEdges to take a const vector by ref
365           rathern then a non-const vector by pointer
366         - Changed EdgeList::addAll to take a const vector by ref
367           rather then a non-const vector by pointer
368         - Added apply_rw(CoordinateFilter *) and apply_ro(CoordinateFilter *)
369           const to CoordinateSequence
370         - LineBuilder::lineEdgesList made a real vector, rather then pointer
371           (private member)
372         - SegmentString::eiList made a real SegmentNodeList, rather then
373           a pointer (private member)
374         - Removed coordinate copies in ElevationMatrix::elevate
375         - Changed CoordinateFilter interface to have a const method
376           for filter_rw, updated interfaces using this to take
377           const CoordinateFilter (apply_rw).
380 Changes in 2.2.4
382         - Added version.in.vc to distribution
384 Changes in 2.2.1
386 - Support for MingW builds
387 - Bugfix in Polygonizer chocking on invalid LineString inputs
388 - CAPI: small leak removed in GEOSHasZ() 
390 Changes in 2.2.0
392 - Performance improvement in OverlayOp::insertUniqueEdge()
393 - CoordinateSequence copy removal in EdgeRing
394 - Minor memory allocation improvements 
395 - Higher dimensions interface for CoordinateSequence
396 - Added getCoordinatesRO for Point class
397 - NEW WKB IO
398 - NEW Simplified and stabler C API 
400 Changes in 2.1.4
402 - Severe BUGFIX in BufferSubgraphGT and other functions used
403   as StrictWeakOrdering predicates for sort()
405 Changes in 2.1.3
407 - win32/mingw build support
408 - Segfault fix in LinearRing and LineString constructors
409 - Segfault fix in Polygonizer
410 - XMLTester installed by default
411 - XMLTester code cleanup
412 - Fixed handling of collection input in GeometryFactory::buildGeometry
413 - Added shortcircuit test for Union operation
414 - Reduced useless Coordinate copies in CGAlgorithms::isPointInRing()
415 - Performance improvements in CGAlgorithms::isOnLine()
416 - Other minor performance improvements
417 - New Node::isIncidentEdgeInResult() method
418 - OverlayOp's PointBuilder performance improvement by reduction
419   of LineIntersector calls.
420 - Optimizations in Buffer operation
421 - Sever BUGFIX in DepthSegmentLT as suggested by Graeme Hiebert
423 Changes in 2.1.2
425 - Segfault fix in Point::isEmpty
426 - Mem Leak fix in OffsetCurveBuilder::getRingCurve
427 - Bugfix in LineSegment::reverse
428 - Added multipolygon buffering test in source/test/testLeaksBig
429 - Ported JTS robustness patch for RobustLineIntersector
430 - Removed useless Coordinate copies in OverlayOp::mergeZ()
431 - Avoided throws by IsValid on invalid input
432 - Stricter C++ syntax (math.h=>cmath, ieeefp.h in "C" block, ostringstream
433   instead of sprintf)
434 - Better support for older compilers (Polygonizer::LineStringAdder friendship)
435 - Removed useless Coordinate copies in CGAlgorithms::isOnLine()
436 - Added support for polygonize and parametrized buffer tests in XMLTester
437 - Fixed support for --includedir and --libdir
438 - Fixed Z interpolation in LineIntersector
439 - Handled NULL results from getCentroid() in XMLTester
440 - Segfault fix in (EMPTY)Geometry::getCentroid()
441 - Made polygon::getBoundary() always OGC-valid (no LinearRings)
442 - Input checking and promoting in GeometryFactory::createMultiLineString()
443 - Segfault fix in GeometryEditor::editPolygon()
446 Changes in 2.1.1
448 - Fixed uninitialized Coordinate in TopologyException
449 - Added install of version.h, platform.h and timeval.h
450 - Memleak fix in PolygonizeGraph
451 - Memleak fix in OverlayOp
452 - Compiler warnings removal
453 - Cleaner w32 build
454 - Z interpolation in overlay operations
455 - Debian package build scripts
458 Changes in 2.1.0
460 - Added Polygonizer and LineMerger classes.
461 - python wrapper examples
462 - General cleanup / warnings removal
463 - cleaner win32 / older copilers builds
464 - Reduced heap allocations
465 - debian package builder scripts
466 - reduction of standard C lib headers dependency
467 - Z support in overlay operations.
470 Changes in 2.0.0
472 - CoordinateList renamed to CoordinateSequence, BasicCoordinateList
473   renamed to DefaultCoordinateSequence to reflect JTS changes.
474   DefaultCoordinateSequenceFactory and CoordinateSequenceFactory
475   got same interface as JTS.
476 - Added geos/version.h defining versioning infos
477 - Added geos.h for quick inclusion. It will include geos/geom.h,
478   new geos/version.h, geos/util.h geos/io.h and geos/unload.h
479   (geometry input/output, exceptions, operations).
480 - Added a geos::version() function showing GEOS and equivalent
481   JTS versions as strings.
482 - All geometry constructors take ownership of given arguments.
483   GeometryFactory provides pass-by-reference geometry creators
484   to take care of a deep-copy.
485 - GeometryFactory::createMultiPoint(const CoordinateList *)
486   has been renamed to
487   GeometryFactory::createMultiPoint(const CoordinateList &)
488   to reflect copy semantic
489 - GeometryFactory: EMPTY geometry creation do now have their
490   own constructors taking no arguments.
491 - Geometry constructors taking PrecisionModel and SRID have
492   been dropped. You have to use GeometryFactory instead.
493 - WKTWriter default constructor has been dropped. You need
494   to initialize it with an explicit GeometryFactory