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