Change return values for GEOSWKBWriter_getIncludeSRID_r to match function signature.
[geos.git] / NEWS
blob4b3a2b3b09f9a66cc5ceb673f759448eef03ccf7
1 Changes in 3.0.0
3    These are mostly ABI breaking changes.
4    In few cases the API also changed, but the most external one
5    (the documented one) should be unchanged.
7 - New things:
8         - Added geom::BinaryOp class performing a binary operation
9           using different heuristics to reduce probability of robustness
10           issues. Both C-API and XMLTester now use this class for
11           binary operations.
12         - Added covers() and coveredBy() predicates to Geometry class
13         - Added overlay::overlayOp() adapter class
14         - Added GEOSSimplify() and GEOSTopologyPreserveSimplify()
15           to the C API
16         - Added closed ring checks in IsValidOp
17         - Multi-input support in XMLTester 
18         - HEXWKB I/O
19         - Envelope(string) ctor
20         - Ruby interface
21         - New ShortCircuitedGeometryVisitor class
22         - New operation/predicate package
23         - Added CGAlgorithms::isPointInRing() version working with
24           Coordinate::ConstVect type (faster!)
25         - Added getAt(int pos, Coordinate &to) funtion to CoordinateSequence
26           class.
27         - Moved GetNumGeometries() and GetGeometryN() interfaces
28           from GeometryCollection to Geometry class.
29         - New planarSubgraph class
30         - New ConnectedSubgraphFinder class.
31         - New LineSequencer class
32         - New WKTWriter::toLineString and ::toPoint convenience methods
33         - New IsValidOp::setSelfTouchingRingFormingHoleValid method
34         - New WKTWriter::toLineString and ::toPoint convenience methods
35         - New IsValidOp::setSelfTouchingRingFormingHoleValid method
36         - New Envelope::centre()
37         - New Envelope::intersection(Envelope)
38         - New Envelope::expandBy(distance, [ydistance])
39         - New LineString::reverse()
40         - New MultiLineString::reverse()
41         - New Geometry::buffer(distance, quadSeg, endCapStyle)
42         - New SnapRounding code
43         - New size() and operator[] interfaces to CoordinateSequence
44         - New ScaledNoder class
45         - New unit tests (make check rule)
47 - Optimizations:
48         - WKT parser speedup
49         - Function inlining
50         - Coordinate copies reduction
51         - Heap allocations reduction
52         - More classes made final
53         - Better use of standard containers
54         - Use of singletons when appropriate
55         - Removed many function calls in loops' end conditions
56         - Improved XMLTester output and user interface
57         - Improved memory use in geos::geom::util::PolygonExtractor
58         - Ported JTS-1.7 version of ConvexHull with big attention to
59           memory usage optimizations.
60         - Changed CoordinateArrayFilter to reduce memory copies
61         - Changed UniqueCoordinateArrayFilter to reduce memory copies
62         - Added rectangle-based optimizations of intersects() and
63           contains() ops
64         - Inlined all planarGraphComponent class
65         - More iterators returning methods and inlining in planargraph.
66         - Obsoleted toInternalGeometry/fromInternalGeometry 
67         - Improved buffering speed and robustness by using Snap Rounding
69 - Semantic changes
71         - SegmentString: getCoordinates() doesn't return a clone
72           anymore, getCoordinatesRO() obsoleted.
73         - JTS packages mapped to geos:: sub-namespaces
74         - Geometry::getInteriorPoint() returns NULL if called
75           against an EMPTY geom
76         - LineString::get{Start,End}Point return NULL for
77           EMPTY geoms
78         - GEOSException is now derived by std::runtim_exception
79           and thrown by const reference.
80         - Geometry constructors made protected, to force use
81           of a GeometryFactory.
83 - Correctness:
84         - More const-correct signatures
85         - Stronger methods typing (removed some void * args).
86         - Changed index-related funx signatures to use size_t
87           rather then int
88         - More const-correctness in Buffer "package"
89         - Bugfix in LineString::getCoordinate() failing to return
90           NULL from getCoordinat() when empty.
91         - Use unsigned int for indexes and sizes.
93 - Layout changes:
94         - Namespaces mapping JTS packages
95         - Renamed classes after JTS names (namespaces use made this possible
96           w/out name clashes)
97         - Splitted headers, for build speedup and possible API reduction.
98         - Moved source/bigtest and source/test to tests/bigtest
99           and test/xmltester
100         - Moved C-API in it's own top-level dir capi/
101         - Reworked automake scripts to produce a static lib for each subdir
102           and then link all subsystem's libs togheter
103         - Renamed DefaultCoordinateSequence to CoordinateArraySequence.
104         - Renamed OverlayOp opcodes by prepending the 'op' prefix, and
105           given the enum a name (OpCode) for type-safety.
107 - Bug fixes:
108         - Fixed bug causing redundant linestrings to be returned in the
109           result of overlaying polygons containing touching holes (#13)
110         - Fixed integer conversion bug
111         - Fixed PointLocator handling of LinearRings
112         - Added missing ::clone() methods for Multi* geoms 
114 - (Partial) Detailed list of changes:
115         - Changed SegmentNode to contain a *real* Coordinate (not a pointer)
116           to reduce construction costs.
117         - Changed geomgraph nodeMap to use Coordinate pointers as keys
118         - Envelope destructor made non-virtual to give compiler more static
119           binding options.
120         - Changed BufferSubgraph::computeDepths to use a set instead of a
121           vector for checking visited Edges.
122         - Made LineIntersector a concrete type
123         - Node::isIncidentEdgeInResult() method made virtual
124         - Const-correct signatures in LineMerger package
125         - Changed operation/valid/*NestedRingTester classes interface
126           to use Coordinate pointers instead of copies.
127         - Changed EdgeIntersectionList to use a set instead of a vector
128         - Changed DepthSegment to store a real Coordinate rather then a pointer.
129         - Changed SubgraphDepthLocater to store real containers rather then
130           pointers.
131         - Changed BufferSubgraph to store a real RightmostEdgeFinder and real
132           containers rather then pointers.
133         - CoordinateSequence API changes:
134                 - point index and size related functions
135                   use unsigned int rather then int
136         - Changed EdgeEndStar to maintain a single container for EdgeEnds 
137         - Changed PlanarGraph::addEdges to take a const vector by ref
138           rathern then a non-const vector by pointer
139         - Changed EdgeList::addAll to take a const vector by ref
140           rather then a non-const vector by pointer
141         - Added apply_rw(CoordinateFilter *) and apply_ro(CoordinateFilter *)
142           const to CoordinateSequence
143         - LineBuilder::lineEdgesList made a real vector, rather then pointer
144           (private member)
145         - SegmentString::eiList made a real SegmentNodeList, rather then
146           a pointer (private member)
147         - Removed coordinate copies in ElevationMatrix::elevate
148         - Changed CoordinateFilter interface to have a const method
149           for filter_rw, updated interfaces using this to take
150           const CoordinateFilter (apply_rw).
153 Changes in 2.2.4
155         - Added version.in.vc to distribution
157 Changes in 2.2.1
159 - Support for MingW builds
160 - Bugfix in Polygonizer chocking on invalid LineString inputs
161 - CAPI: small leak removed in GEOSHasZ() 
163 Changes in 2.2.0
165 - Performance improvement in OverlayOp::insertUniqueEdge()
166 - CoordinateSequence copy removal in EdgeRing
167 - Minor memory allocation improvements 
168 - Higher dimensions interface for CoordinateSequence
169 - Added getCoordinatesRO for Point class
170 - NEW WKB IO
171 - NEW Simplified and stabler C API 
173 Changes in 2.1.4
175 - Severe BUGFIX in BufferSubgraphGT and other functions used
176   as StrictWeakOrdering predicates for sort()
178 Changes in 2.1.3
180 - win32/mingw build support
181 - Segfault fix in LinearRing and LineString constructors
182 - Segfault fix in Polygonizer
183 - XMLTester installed by default
184 - XMLTester code cleanup
185 - Fixed handling of collection input in GeometryFactory::buildGeometry
186 - Added shortcircuit test for Union operation
187 - Reduced useless Coordinate copies in CGAlgorithms::isPointInRing()
188 - Performance improvements in CGAlgorithms::isOnLine()
189 - Other minor performance improvements
190 - New Node::isIncidentEdgeInResult() method
191 - OverlayOp's PointBuilder performance improvement by reduction
192   of LineIntersector calls.
193 - Optimizations in Buffer operation
194 - Sever BUGFIX in DepthSegmentLT as suggested by Graeme Hiebert
196 Changes in 2.1.2
198 - Segfault fix in Point::isEmpty
199 - Mem Leak fix in OffsetCurveBuilder::getRingCurve
200 - Bugfix in LineSegment::reverse
201 - Added multipolygon buffering test in source/test/testLeaksBig
202 - Ported JTS robustness patch for RobustLineIntersector
203 - Removed useless Coordinate copies in OverlayOp::mergeZ()
204 - Avoided throws by IsValid on invalid input
205 - Stricter C++ syntax (math.h=>cmath, ieeefp.h in "C" block, ostringstream
206   instead of sprintf)
207 - Better support for older compilers (Polygonizer::LineStringAdder friendship)
208 - Removed useless Coordinate copies in CGAlgorithms::isOnLine()
209 - Added support for polygonize and parametrized buffer tests in XMLTester
210 - Fixed support for --includedir and --libdir
211 - Fixed Z interpolation in LineIntersector
212 - Handled NULL results from getCentroid() in XMLTester
213 - Segfault fix in (EMPTY)Geometry::getCentroid()
214 - Made polygon::getBoundary() always OGC-valid (no LinearRings)
215 - Input checking and promoting in GeometryFactory::createMultiLineString()
216 - Segfault fix in GeometryEditor::editPolygon()
219 Changes in 2.1.1
221 - Fixed uninitialized Coordinate in TopologyException
222 - Added install of version.h, platform.h and timeval.h
223 - Memleak fix in PolygonizeGraph
224 - Memleak fix in OverlayOp
225 - Compiler warnings removal
226 - Cleaner w32 build
227 - Z interpolation in overlay operations
228 - Debian package build scripts
231 Changes in 2.1.0
233 - Added Polygonizer and LineMerger classes.
234 - python wrapper examples
235 - General cleanup / warnings removal
236 - cleaner win32 / older copilers builds
237 - Reduced heap allocations
238 - debian package builder scripts
239 - reduction of standard C lib headers dependency
240 - Z support in overlay operations.
243 Changes in 2.0.0
245 - CoordinateList renamed to CoordinateSequence, BasicCoordinateList
246   renamed to DefaultCoordinateSequence to reflect JTS changes.
247   DefaultCoordinateSequenceFactory and CoordinateSequenceFactory
248   got same interface as JTS.
249 - Added geos/version.h defining versioning infos
250 - Added geos.h for quick inclusion. It will include geos/geom.h,
251   new geos/version.h, geos/util.h geos/io.h and geos/unload.h
252   (geometry input/output, exceptions, operations).
253 - Added a geos::version() function showing GEOS and equivalent
254   JTS versions as strings.
255 - All geometry constructors take ownership of given arguments.
256   GeometryFactory provides pass-by-reference geometry creators
257   to take care of a deep-copy.
258 - GeometryFactory::createMultiPoint(const CoordinateList *)
259   has been renamed to
260   GeometryFactory::createMultiPoint(const CoordinateList &)
261   to reflect copy semantic
262 - GeometryFactory: EMPTY geometry creation do now have their
263   own constructors taking no arguments.
264 - Geometry constructors taking PrecisionModel and SRID have
265   been dropped. You have to use GeometryFactory instead.
266 - WKTWriter default constructor has been dropped. You need
267   to initialize it with an explicit GeometryFactory