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