-
Notifications
You must be signed in to change notification settings - Fork 3
/
ChangeLog
326 lines (173 loc) · 8.12 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
=====================
intervalxt Change Log
=====================
.. current developments
v3.3.4
====================
**Fixed:**
* Fixed access to `left()` and `right()` of a component from Python.
v3.3.3
====================
**Fixed:**
* Fixed typos in documentation.
* Fixed building libintervalxt with fmt version 10.
v3.3.2
====================
**Added:**
* Added automatic testing on macOS in our CI setup.
* Added support for Python 3.10 to the automated tests.
**Removed:**
* Removed explicit support for Python 3.6 since it reached its end of life in 12/2021; i.e., we are not testing with Python 3.6 in our CI anymore.
* Removed the static library from the conda package that we upload with every commit to the master branch to the flatsurf channel. To our knowledge nobody is using these builds. They can sometimes be useful for debugging because they are built with debug symbols (which is why they are very big.) Providing a static library that nobody should use anyway is eating up the limited storage on anaconda.org twice as fast so we disable this.
**Fixed:**
* Adapted CI setup on GitHub to changes in setup-miniconda.
* Adapted to breaking changes in exact-real 3. (The library should work with both exact-real 2 and 3.)
* Removed unused includes from source code.
v3.3.1
====================
**Fixed:**
* Use only fully supported packages from conda-forge in CI (and not the experimental builds from the flatsurf channel with incompatible dependencies.)
* Allow build with fmt library version 6, 7, 8 or 9.
* Fixed compile error on clang/macOS.
v3.3.0
====================
**Added:**
* Added `IntervalExchangeTransformation::boshernitzanNoSaddleConnection()` to certify the absence of saddle connections in an IET.
* Added `IntervalExchangeTransformation::boshernitzanEquations()` and `IntervalExchangeTransformation::boshernitzanSaddleConnectionValues()` to expose equations underlying `IntervalExchangeTransformation::boshernitzanNoPeriodicTrajectories()` and `IntervalExchangeTransformation::boshernitzanNoSaddleConnection()`.
* Added fallback printing of `interalxt::Label` to an `std::ostream` when `Lengths::render` is not available.
* Added fallback printing of a `Label` in Python when the corresponding `Lengths` are not available.
**Removed:**
* Removed unused `length.ipp` header.
**Fixed:**
* Made all methods of `intervalxt::Length` and `intervalxt::Length` accessible from Python.
* Removed libtool scripts from repository.
* Removed broken binder tests from CI. (We should instead build a conda package and run tests with that package installed.)
* Compilation with clang on macOS
v3.2.0
====================
**Added:**
* Added `LIBINTERVALXT_API` markers to support building with `-fvisibility=hidden -fvisibility-inlines-hidden`.
* Added support for version script when linking on Linux, i.e., producing a library that only exports a minimal set of symbols. Enable with ./configure --with-version-script.
**Fixed:**
* Allow build with fmt library version 6, 7 or 8.
v3.1.4
====================
**Fixed:**
* Remove debug output.
v3.1.3
====================
**Fixed:**
* Adapted to changes in latest e-antic RC
v3.1.2
====================
**Fixed:**
* Cylinders and components without periodic trajectories next to undetermined components are now properly detected and not reported as undetermined as well.
v3.1.1
====================
**Fixed:**
* serialization of IETs with e-antic and exactreal lengths
v3.1.0
====================
**Added:**
* Assertions and parameter checks can be disabled at runtime by setting the environment variables `LIBINTERVALXT_NOASSERT` and `LIBINTERVALXT_NOCHECK`.
**Fixed:**
* Do not print timing information when running Boshernitzan criterion and actually use the fast default algorithm. (Debug output that should not have been committed.)
v3.0.4
====================
**Fixed:**
* Require `cppyythonizations` for `pyintervalxt` conda package.
* updated .gitignore files
**Performance:**
* speed up the Boshernitzan criterion by using a Mixed Integer Program internally instead of Polyhedra functionality in PPL.
v3.0.3
====================
**Added:**
* run CI and deploy with Python 3.8 and Python 3.9.
**Changed:**
* use GitHub Actions for CI
**Fixed:**
* Test with assertions enabled and also publish to anaconda with assertions enabled.
* Do not run GitHub Actions on forks but only on Pull Requests. If you really want this, you could push to your fork's master branch.
* simplified build instructions with conda/mamba in README
* Rever script now bumps the version number of the conda package correctly.
v3.0.2
====================
**Performance:**
* use specialized `renf_elem_fdiv` for floor divisions with e-antic elements
v3.0.1
====================
**Fixed:**
* commit links in ASV reports
* Report coverage changes on Pull Requests
* Do not build conda package against broken fmt-7.1.0
v3.0.0
====================
**Changed:**
* A `DynamicalDecomposition` can now be copied (sharing a reference to the same underlying data.)
* Simplified `noexcept` qualifications on all methods in the public API.
**Removed:**
* Public `HalfEdge` constructor. Half edges should always be created by extracting them from a component's contour.
**Fixed:**
* Fixed two memory leaks in decomposition due to circular sequences of shared
pointers. And refactored the internal data structures quite heavily.
v2.1.1
====================
**Fixed:**
* `Component::iet()` returned a `unique_ptr`; there's no need for that since
`IntervalExchangeTransformation` can be moved (and easily copied if needed.)
So we now return an IntervalExchangeTransformation instead. (technically, a
breaking API & ABI change but nobody is using this functionality that we
released a few minutes ago yet.)
v2.1.0
====================
**Added:**
* Component::iet() to be able to debug problems in Lengths implementations by
working on a stripped down copy of the Interval Exchange Transformation
underlying a component
v2.0.2
====================
**Fixed:**
* hang in `Component::decompositionStep`, should fix https://github.com/flatsurf/flatsurf/issues/136
v2.0.1
====================
**Fixed:**
* `sample::Coefficients` for exact real types; also added (trivial) tests for coefficients
* libintervalxt is not linked against e-antic and exact-real anymore. Instead, the tests are only run when these libraries are present.
v2.0.0
====================
**Added:**
* IntervalExchangeTransformation::equivalent() method to decide whether two
interval exchange transformations are equivalent modulo the precise labeling.
* The `Lengths` of an `IntervalExchangeTransformation` are not available as
`iet.lengths` in Python. This is probably limited to interval exchange
transformations originally created through the Python interface.
**Changed:**
* Split `::intervalxt::sample::Arithmetic` into
`::intervalxt::sample::FloorDivision` and
`::intervalxt::sample::Coefficients`. The latter now accepts a vector of
elements and produces a vector of Q-vectors that correspond to the given
elements after being brought into the same vector space. This is a breaking
API change.
* The method `Lengths::coefficients()` now expects a vector of labels and
produces a vector of Q-vectors corresponding to realizations of the
corresponding lengths in a common Q vector space.
* The method `IntervalExchangeTransformation::safInvariant()` now returns a
`vector<mpq_class>` instead of a `valarray<mpq_class>`. The valarray had
always been a source of issues since it does not play nicely with vectors
that we use everywhere else in the flatsurf stack.
* In the Python interface, `IET` has been renamed to
`IntervalExchangeTransformation` and `makeLengths` to `Lengths`.
* `sample::Lengths` over integer types now require `gmpxxll` to be available.
**Fixed:**
* Most labels now print nicely in the Python interface.
* negative lengths are now detected in the Python interface and reported as an error, #85
v1.0.3
====================
**Added:**
* safety checks for rever deploy script
**Changed:**
* upgraded clang-format to clang version 10
v1.0.2
====================
**Changed:**
* release with rever