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