-
Notifications
You must be signed in to change notification settings - Fork 29
/
Changelog.scim
339 lines (225 loc) · 8.09 KB
/
Changelog.scim
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
325
326
327
328
329
330
331
332
333
334
335
336
337
338
= Changelog
== v0.36.0
date = 2024-08-24
# Api changes
• rename module imports to use generic names:
• rescala -> reactives
• kofre -> rdts
• refactor API to no longer require bundle traits
• this removes the capability to select schedulers at runtime and instead moves the selection to compile time
• this release uses the levelled scheduler
• rename event.act to event.branch for a more consistent API
• remove infix on most methods
• reactive tags integration no longer depends on scalatags, works on dom elements directly
• rdts still have quickly changing API
• no more extensions based wrapped APIs
• more systematic Ids
# Extra modules
• reactive lenses experiments
• lore is now part of the repo (not included in releases)
• there is also an experimental lore compiler plugin
• add channels module as an experiment to have rdt specific communication infrastructure
• with initial DTN support
• local first access control experiments
• vendor in quicklens and adapt to allow to produce deltas
• remove the graph compiler module (historical now)
• add webview experiments
# Internal improvements
• migrate all tests to munit
• compile with safe init and explicit nulls (most modules)
• make a special propagation phase for followup transactions (this is still not a well-designed area …)
== v0.35.1
date = 2024-03-08
• update Scala version to 3.3.3 due to incompatible release
== v0.35.0
date = 2024-02-24
This is a smaller release meant to mark a stable point before incompatible changes
reactives:
• allow .value inside fold
replicated data types:
• remove dotset/map/fun, now generically generated from maps
== v0.34.0
date = 2023-11-10
for reactives:
• drop Scala 2 support
• We kept this around for compatibility with Scala Loci case studies, but those will keep working just fine with 0.33.
• Maintaining the Scala 2 macros became too much. Every refactor breaks them in very subtle ways, due to the interactions of the generic nature of the code, and the macros resolving types weirdly.
• We would like to update some APIs to make better use of Scala 3 features, in particular better handling of implicits, and more flexible macros will make certain parts of the code much more maintainable and enable better syntax for users.
• removed internal types from the public interface trait
• remove old fold syntax
• remove reduce (use new fold syntax instead)
• remove zip events (use event expressions instead)
• remove += (use observe instead)
• remove apply for reading values, use value instead
• rename \ to except
• rename latest to hold
• rename last to list
• improve Event.fromCallback syntax
• remove reactive-streams dependency and upgrade to java Flow instead (still mostly untested, because their test suite requires finite streams, which we don’t have)
• add snap to snapshot some signals when an event triggers (like map, but ignoring the event parameter)
• enable debugger hooks
for replicated data types:
• generate lattices from orderings
• more systematic causal time implementation and use
• generalized dot using lattices by filtering dots instead of custom merges
• drop decompose lattice and normal lattice distinction, decomposition is now simply a best effort feature
== v0.33.1
date = 2024-06-01
• fix default signal and event expressions in JavaScript
== v0.33.0
date = 2023-02-22
• move errant new transactions during propagation to observer phase
• partially undo bundles to improve doc compile time efficiency
• new Fold now correctly handles dynamic dependencies
• more structured debug info stored in reactives
• simplify Lattices inheritance structure
== v0.32.0
date = 2022-12-31
• automatic derivation of replicated data types
• cleaned up implementations of built-in replicated data types
• Scala 3 version now has signal macros
• move incremental collections' thesis results into main repository
== v0.31.0
date = 2021-12-07
• drop checked macro support, use snapshot helpers instead
• promote fullMV scheduler to published artifact
• add experimental reactor syntax
• internal refactoring for Scala 3 support (-macros)
== v0.30.0
date = 2020-04-10
• update ScalaJS to 1.0
• fixes to cross compile for 2.11 (JVM only), 2.12, and 2.13
• new Signal.map macro
• more CRDT experiments
== v0.29.0
date = 2019-09-15
* update scala-loci version to 0.3.0
== v0.28.0
date = 2019-09-08
* fix rescalatgas observer behavior
== v0.27.0
date = 2019-09-7
Include small external projects into the main project. This simplifies
publishing and makes experimental features available in the published versions.
== v0.26.0
date = 2019-07-14
* enable .value use in filter and collect macros
* bugfixes for fold macro
* add more crdts/lattice types
* improve automatic name generation of reactives
* update dependencies
== v0.25.0
date = 2019-03-31
* many improvements to rescalatags
* internal code cleanup and refactoring
* CRDT library and distribution based on loci cleanups
== v0.24.0
date = 2018-07-14
* move default import to rescala.default
* updates to flatten operator
* improve reactive macro cut out
* better support for restoration
== v0.23.0
date = 2018-05-07
no notes
== v0.22.0
date = 2018-02-25
* add experimental multi fold events
* fold is now a macro (can use signal dependencies)
* rescalatags can now handle frags
* internal refactorings
== v0.21.1
date = 2018-01-28
* fix infinite loop when starting turns in observers
== v0.21.0
date = 2018-01-28
* Reactive expressions are now static by default,
and complain if any dynamic access happens.
* Event.map is now also a macro and allows accessing reactives.
* Internal interface cleanups and performance improvements.
== v0.20.0
date = 2017-11-14
no notes
== v0.19.0
date = 2016-12-21
This is mostly a maintenance release to support Scala 2.12.
* add Observable type alias to engine
== v0.18.0
date = 2016-09-19
* many fixes and improvements for the Signal macro
* add the rescalatags mini framework (thanks scala.rx and scalatags)
* reactives can now propagate exceptions
* signal can now be empty
* importing `rescala._` should now cover everything useful (and not much more)
* improved flattening, can now flatten many more combinations
* migrated from junit to scalatest only
* add reactive streams compatibility layer
* allow garbage collection of unused downstream reactives
== v0.17.0
date = 2016-07-04
embed RESwing
embed case studies
update locksweep semantics to match parrp (according to tests)
release locks before observer phase
== v0.16.0
date = 2016-04-04
* locksweep is now counter based
* refactor internal API
* benchmark cleanups and additions
== v0.15.0
date = 2016-02-25
* reactive state handled per engine
* merge pipelining branch
== v0.14.0
date = 2016-02-09
no notes
== v0.13.0
date = 2015-06-20
* add microbenchmarks
* fix bug with missed key transfers
* compile with scalajs
* make composition of reactives typesafe with regard to internal state
== v0.12.0
date = 2015-06-15
AtomicReferences instead of synchronized for lock implementation
ParRP turn refactoring
remove cyclic reference between turns and engines
experimental GC starting from unused sources
== v0.11.0 aka the thesis version
date = 2015-03-12
disabled assertions
added exponential back-off as a combined waiting strategy
bug fixes and code cleanups
== v0.10.0
date = 2015-02-11
simplify inter turn synchronization by introducing explicit keychains
miscellaneous fixes improvements and renamings
== v0.9.0
date = 2014-12-29
code cleanups and minor improvements
== v0.8.0
date = 2014-12-22
reactives with a single static dependency now reuse the lock of their predecessor
== v0.7.0
date = 2014-12-19
added STM turns
added yielding turns
philosophers are back! and eating!
== v0.6.0
date = 2014-12-17
fixed dynamic reads
improved turn creation interface
added spinlocking for initial lock acquisition
removed philosophers
== v0.5.0
date = 2014-12-11
this has improved pessimistic locking
== v0.4.0
date = 2014-12-01
no notes
== v0.3.0
date = 2014-10-29
no notes
== v0.2.0
date = 2016-08-17
version used for public case and user studies