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