Fix out of source builds (make check, actually)
[geos.git] / NEWS
blob3fbc78fb1223e39ee3e0547f4cc39b6532663561
1 Changes in 3.3.1
2 ????-??-??
4 - Bug fixes / improvements
5   - ValidOp abort in presence of 2 touching holes forming an island (#449)
6   - Enable prepared intersects operation for points
7   - Fortify suspicious code found by static analisys tools
8   - Fix for SOLARIS build 
9   - Fix EMPTY result from GEOSOffsetCurve with distance 0 (#454)
10   - Fix out of source builds
12 Changes in 3.3.0
13 2011-05-30
15 - New things:
16   - CAPI: GEOSBufferWithParams (allows single sided buffers)
17   - CAPI: GEOSOffsetCurve deprecates GEOSSingleSidedBuffer
18   - CAPI: GEOSUnaryUnion deprecates GEOSCascadedUnion
19   - CAPI: GEOSisValidDetail: tell state, reason & location apart. allows
20           passing flags.
21   - CAPI: GEOSContext_setNoticeHandler_r, GEOSContext_setErrorHandler_r
22   - CAPI: GEOSGeom_createEmptyPoint, GEOSGeom_createEmptyLineString
23           GEOSGeom_createEmptyPolygon, GEOSGeom_createEmptyCollection
24   - CAPI: GEOSGeom_extractUniquePoints
25   - CAPI: GEOSGetGeometryN support for single geometries
26   - CAPI: GEOSPolygonize_full to return all informations computed by
27           the polygonizer
28   - CAPI: GEOSOrientationIndex
29   - CAPI: GEOSSharedPaths to find shared paths and their orientation
30   - CAPI: GEOSSnap 
31   - CAPI: GEOSRelatePatternMatch 
32   - CAPI: GEOSCovers, GEOSCoveredBy (#396) 
33   - CAPI: GEOSRelateBoundaryNodeRule (#399) 
34   -  PHP: new PHP5 bindings based on CAPI
35 - Semantic C++ API changes:
36   - Geometry inheritance chain changed to introduce Puntal, Lineal
37     and Polygonal classes (virtual inheritance introduced)
38   - Polygonizer::getInvalidRingLines retains ownership of vector elements
39   - Geometry::isWithinDistance method is now const
40   - Polygonizer::getCutEdges returns by const ref
41   - Polygonizer::getDangles returns by const ref
42   - Empty LinearRings are closed by definition
43 - Bug fixes / improvements
44   - Fixed Geometry.distance() and DistanceOp to return 0.0 for empty inputs
45   - Invalid compound geometries reported as valid (#333)
46   - Return up to 15 digits of precision from GEOSisValidReason_t (#329)
47   - CAPI: do not leak contexts when using the non-reentrant interface
48   - Fix duplicated dangles returned by Polygonizer
49   - Fix SnapIfNeededOverlayOp to throw the originating exception
50   - Fixed LineMerger to skip lines with only a single unique coordinate
51   - Fix NodedSegmentString to handle zero-length line segments correctly
52     (via safeOctant)
53   - Fixed buffer OffsetCurveSetBuilder to handle "flat" rings correctly
54   - Added illegal state check in LineSegment::pointAlongOffset() 
55   - Improved performance of RectangleIntersects by always using
56     segment-scanning and refining SegmentIntersectionTester
57   - Reduce memory use in PreparedGeometry predicates (#342)
58   - Fix infinite loop in RobustDeterminant with nan/inf input (#357)
60 Changes in 3.2.0 
61 2009-12-14
63 - Add Single-sided buffer operation
64 - JTS-1.10 sync ...
65   - Drastically improved Buffer speed (20x for a case in testsuite)
66   - Improved EdgeList duplicate edge finding
67   - Added algorithm::distance package
68   - Added algorithm::Angle class
69   - Added algorithm::BoundaryNodeRule class
70   - IsSimpleOp can now return non-simple location coordinate
71   - DistanceOp can now check for 'within distance' predicate
72     (earlier exit)
73   - MultiPolygon::getBoundary always return MultiLineString, also
74     when the result is the EMPTY geometry.
75 - Various bug and leak fixes, optimizations
76 - Replace MarkupSTL with tinyXML
78 Changes in 3.1.0
80 - PreparedGeometry operations for very fast predicate testing.
81   - Intersects()
82   - Covers() 
83   - CoveredBy()
84   - ContainsProperly()
85 - Easier builds under MSVC and OpenSolaris
86 - Thread-safe CAPI option
87 - IsValidReason added to CAPI
88 - GEOSPolygonizer_getCutEdges added to CAPI
89 - CascadedUnion operation for fast unions of geometry sets
90 - Numerous bug fixes.
91   http://trac.osgeo.org/geos/query?status=closed&milestone=3.1.0&order=priority
93 Changes in 3.0.0
95    These are mostly ABI breaking changes.
96    In few cases the API also changed, but the most external one
97    (the documented one) should be unchanged.
99 - New things:
100         - Added geom::BinaryOp class performing a binary operation
101           using different heuristics to reduce probability of robustness
102           issues. Both C-API and XMLTester now use this class for
103           binary operations.
104         - Added covers() and coveredBy() predicates to Geometry class
105         - Added overlay::overlayOp() adapter class
106         - Added GEOSSimplify() and GEOSTopologyPreserveSimplify()
107           to the C API
108         - Added closed ring checks in IsValidOp
109         - Multi-input support in XMLTester 
110         - HEXWKB I/O
111         - Envelope(string) ctor
112         - Ruby interface
113         - New ShortCircuitedGeometryVisitor class
114         - New operation/predicate package
115         - Added CGAlgorithms::isPointInRing() version working with
116           Coordinate::ConstVect type (faster!)
117         - Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence
118           class.
119         - Moved GetNumGeometries() and GetGeometryN() interfaces
120           from GeometryCollection to Geometry class.
121         - New planarSubgraph class
122         - New ConnectedSubgraphFinder class.
123         - New LineSequencer class
124         - New WKTWriter::toLineString and ::toPoint convenience methods
125         - New IsValidOp::setSelfTouchingRingFormingHoleValid method
126         - New WKTWriter::toLineString and ::toPoint convenience methods
127         - New IsValidOp::setSelfTouchingRingFormingHoleValid method
128         - New Envelope::centre()
129         - New Envelope::intersection(Envelope)
130         - New Envelope::expandBy(distance, [ydistance])
131         - New LineString::reverse()
132         - New MultiLineString::reverse()
133         - New Geometry::buffer(distance, quadSeg, endCapStyle)
134         - New SnapRounding code
135         - New size() and operator[] interfaces to CoordinateSequence
136         - New ScaledNoder class
137         - New unit tests (make check rule)
139 - Optimizations:
140         - WKT parser speedup
141         - Function inlining
142         - Coordinate copies reduction
143         - Heap allocations reduction
144         - More classes made final
145         - Better use of standard containers
146         - Use of singletons when appropriate
147         - Removed many function calls in loops' end conditions
148         - Improved XMLTester output and user interface
149         - Improved memory use in geos::geom::util::PolygonExtractor
150         - Ported JTS-1.7 version of ConvexHull with big attention to
151           memory usage optimizations.
152         - Changed CoordinateArrayFilter to reduce memory copies
153         - Changed UniqueCoordinateArrayFilter to reduce memory copies
154         - Added rectangle-based optimizations of intersects() and
155           contains() ops
156         - Inlined all planarGraphComponent class
157         - More iterators returning methods and inlining in planargraph.
158         - Obsoleted toInternalGeometry/fromInternalGeometry 
159         - Improved buffering speed and robustness by using Snap Rounding
161 - Semantic changes
163         - SegmentString: getCoordinates() doesn't return a clone
164           anymore, getCoordinatesRO() obsoleted.
165         - JTS packages mapped to geos:: sub-namespaces
166         - Geometry::getInteriorPoint() returns NULL if called
167           against an EMPTY geom
168         - LineString::get{Start,End}Point return NULL for
169           EMPTY geoms
170         - GEOSException is now derived by std::runtim_exception
171           and thrown by const reference.
172         - Geometry constructors made protected, to force use
173           of a GeometryFactory.
175 - Correctness:
176         - More const-correct signatures
177         - Stronger methods typing (removed some void * args).
178         - Changed index-related funx signatures to use size_t
179           rather then int
180         - More const-correctness in Buffer "package"
181         - Bugfix in LineString::getCoordinate() failing to return
182           NULL from getCoordinat() when empty.
183         - Use unsigned int for indexes and sizes.
185 - Layout changes:
186         - Namespaces mapping JTS packages
187         - Renamed classes after JTS names (namespaces use made this possible
188           w/out name clashes)
189         - Splitted headers, for build speedup and possible API reduction.
190         - Moved source/bigtest and source/test to tests/bigtest
191           and test/xmltester
192         - Moved C-API in it's own top-level dir capi/
193         - Reworked automake scripts to produce a static lib for each subdir
194           and then link all subsystem's libs togheter
195         - Renamed DefaultCoordinateSequence to CoordinateArraySequence.
196         - Renamed OverlayOp opcodes by prepending the 'op' prefix, and
197           given the enum a name (OpCode) for type-safety.
199 - Bug fixes:
200         - Fixed bug causing redundant linestrings to be returned in the
201           result of overlaying polygons containing touching holes (#13)
202         - Fixed integer conversion bug
203         - Fixed PointLocator handling of LinearRings
204         - Added missing ::clone() methods for Multi* geoms 
206 - (Partial) Detailed list of changes:
207         - Changed SegmentNode to contain a *real* Coordinate (not a pointer)
208           to reduce construction costs.
209         - Changed geomgraph nodeMap to use Coordinate pointers as keys
210         - Envelope destructor made non-virtual to give compiler more static
211           binding options.
212         - Changed BufferSubgraph::computeDepths to use a set instead of a
213           vector for checking visited Edges.
214         - Made LineIntersector a concrete type
215         - Node::isIncidentEdgeInResult() method made virtual
216         - Const-correct signatures in LineMerger package
217         - Changed operation/valid/*NestedRingTester classes interface
218           to use Coordinate pointers instead of copies.
219         - Changed EdgeIntersectionList to use a set instead of a vector
220         - Changed DepthSegment to store a real Coordinate rather then a pointer.
221         - Changed SubgraphDepthLocater to store real containers rather then
222           pointers.
223         - Changed BufferSubgraph to store a real RightmostEdgeFinder and real
224           containers rather then pointers.
225         - CoordinateSequence API changes:
226                 - point index and size related functions
227                   use unsigned int rather then int
228         - Changed EdgeEndStar to maintain a single container for EdgeEnds 
229         - Changed PlanarGraph::addEdges to take a const vector by ref
230           rathern then a non-const vector by pointer
231         - Changed EdgeList::addAll to take a const vector by ref
232           rather then a non-const vector by pointer
233         - Added apply_rw(CoordinateFilter *) and apply_ro(CoordinateFilter *)
234           const to CoordinateSequence
235         - LineBuilder::lineEdgesList made a real vector, rather then pointer
236           (private member)
237         - SegmentString::eiList made a real SegmentNodeList, rather then
238           a pointer (private member)
239         - Removed coordinate copies in ElevationMatrix::elevate
240         - Changed CoordinateFilter interface to have a const method
241           for filter_rw, updated interfaces using this to take
242           const CoordinateFilter (apply_rw).
245 Changes in 2.2.4
247         - Added version.in.vc to distribution
249 Changes in 2.2.1
251 - Support for MingW builds
252 - Bugfix in Polygonizer chocking on invalid LineString inputs
253 - CAPI: small leak removed in GEOSHasZ() 
255 Changes in 2.2.0
257 - Performance improvement in OverlayOp::insertUniqueEdge()
258 - CoordinateSequence copy removal in EdgeRing
259 - Minor memory allocation improvements 
260 - Higher dimensions interface for CoordinateSequence
261 - Added getCoordinatesRO for Point class
262 - NEW WKB IO
263 - NEW Simplified and stabler C API 
265 Changes in 2.1.4
267 - Severe BUGFIX in BufferSubgraphGT and other functions used
268   as StrictWeakOrdering predicates for sort()
270 Changes in 2.1.3
272 - win32/mingw build support
273 - Segfault fix in LinearRing and LineString constructors
274 - Segfault fix in Polygonizer
275 - XMLTester installed by default
276 - XMLTester code cleanup
277 - Fixed handling of collection input in GeometryFactory::buildGeometry
278 - Added shortcircuit test for Union operation
279 - Reduced useless Coordinate copies in CGAlgorithms::isPointInRing()
280 - Performance improvements in CGAlgorithms::isOnLine()
281 - Other minor performance improvements
282 - New Node::isIncidentEdgeInResult() method
283 - OverlayOp's PointBuilder performance improvement by reduction
284   of LineIntersector calls.
285 - Optimizations in Buffer operation
286 - Sever BUGFIX in DepthSegmentLT as suggested by Graeme Hiebert
288 Changes in 2.1.2
290 - Segfault fix in Point::isEmpty
291 - Mem Leak fix in OffsetCurveBuilder::getRingCurve
292 - Bugfix in LineSegment::reverse
293 - Added multipolygon buffering test in source/test/testLeaksBig
294 - Ported JTS robustness patch for RobustLineIntersector
295 - Removed useless Coordinate copies in OverlayOp::mergeZ()
296 - Avoided throws by IsValid on invalid input
297 - Stricter C++ syntax (math.h=>cmath, ieeefp.h in "C" block, ostringstream
298   instead of sprintf)
299 - Better support for older compilers (Polygonizer::LineStringAdder friendship)
300 - Removed useless Coordinate copies in CGAlgorithms::isOnLine()
301 - Added support for polygonize and parametrized buffer tests in XMLTester
302 - Fixed support for --includedir and --libdir
303 - Fixed Z interpolation in LineIntersector
304 - Handled NULL results from getCentroid() in XMLTester
305 - Segfault fix in (EMPTY)Geometry::getCentroid()
306 - Made polygon::getBoundary() always OGC-valid (no LinearRings)
307 - Input checking and promoting in GeometryFactory::createMultiLineString()
308 - Segfault fix in GeometryEditor::editPolygon()
311 Changes in 2.1.1
313 - Fixed uninitialized Coordinate in TopologyException
314 - Added install of version.h, platform.h and timeval.h
315 - Memleak fix in PolygonizeGraph
316 - Memleak fix in OverlayOp
317 - Compiler warnings removal
318 - Cleaner w32 build
319 - Z interpolation in overlay operations
320 - Debian package build scripts
323 Changes in 2.1.0
325 - Added Polygonizer and LineMerger classes.
326 - python wrapper examples
327 - General cleanup / warnings removal
328 - cleaner win32 / older copilers builds
329 - Reduced heap allocations
330 - debian package builder scripts
331 - reduction of standard C lib headers dependency
332 - Z support in overlay operations.
335 Changes in 2.0.0
337 - CoordinateList renamed to CoordinateSequence, BasicCoordinateList
338   renamed to DefaultCoordinateSequence to reflect JTS changes.
339   DefaultCoordinateSequenceFactory and CoordinateSequenceFactory
340   got same interface as JTS.
341 - Added geos/version.h defining versioning infos
342 - Added geos.h for quick inclusion. It will include geos/geom.h,
343   new geos/version.h, geos/util.h geos/io.h and geos/unload.h
344   (geometry input/output, exceptions, operations).
345 - Added a geos::version() function showing GEOS and equivalent
346   JTS versions as strings.
347 - All geometry constructors take ownership of given arguments.
348   GeometryFactory provides pass-by-reference geometry creators
349   to take care of a deep-copy.
350 - GeometryFactory::createMultiPoint(const CoordinateList *)
351   has been renamed to
352   GeometryFactory::createMultiPoint(const CoordinateList &)
353   to reflect copy semantic
354 - GeometryFactory: EMPTY geometry creation do now have their
355   own constructors taking no arguments.
356 - Geometry constructors taking PrecisionModel and SRID have
357   been dropped. You have to use GeometryFactory instead.
358 - WKTWriter default constructor has been dropped. You need
359   to initialize it with an explicit GeometryFactory