-
Notifications
You must be signed in to change notification settings - Fork 19
/
NEWS.txt
392 lines (325 loc) · 16.5 KB
/
NEWS.txt
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
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
0.9.0 (2020-08-26):
Major:
- (#107) Passwords are now stored hashed; make use of the APIs introduced in
0.8.0 to set or change passwords.
Minor:
- (#115) Axiom's internal schema now quotes all names to avoid collisions with
future SQLite reserved words.
0.8.0 (2020-01-28):
Major:
- (#87) Axiom now creates tables with an explicit `INTEGER PRIMARY KEY`
column, which means that `VACUUM` will no longer corrupt the database.
`axiomatic upgrade` will migrate the existing tables in a store; as every
table must be copied, this may take a while on large stores.
- (#91) `axiom.userbase.LoginAccount` now has `setPassword` and
`replacePassword` methods. In a future version plaintext passwords will no
longer be stored at all, so applications must be migrated away from direct
`LoginAccount.password` use.
- (#89) `axiom.store.Store` takes a new parameter `journalMode`, and
`axiomatic` a corresponding `--journal-mode` argument. The SQLite journal
mode will be set to this value when the store is opened, and substores will
inherit the setting. The current default is `None` which sets no mode at
all, but this will change to `u'WAL'` in a future version.
Minor:
- (#69) The exception raised when a store's persisted schema does not match the
in-memory schema now shows the differences.
- (#68) ORDER BY is now suppressed for deleteFromStore with no LIMIT.
- (#88) There is a new @empowerment decorator for bestowing
`powerupInterfaces` on an `Item`.
0.7.5 (2015-02-04):
Major:
- Python 2.6 is now unsupported, due to Twisted dropping 2.6 support.
- Fix an issue where the value of a reference pointing at a legacy item (ie.
created in an upgrader) could be lost once the upgrade completed in some
circumstances.
- All `attributes.bytes` comparisons based on the `LIKE` SQL operator (`like`,
`notLike`, `startswith`, and `endswith`) are deprecated. If SQLite was
compiled with the `SQLITE_LIKE_DOESNT_MATCH_BLOBS` option (such as the
Debian package does from version 3.10.0-1), these comparisons are always
false; and even when this option is not active, the behaviour of the `LIKE`
operator with `BLOB` values is unexpected (the operands are cast to `TEXT`
before the comparison is done).
Minor:
- `axiomatic start` needs to handle some `twistd` arguments specially;
fix an issue where arguments in the `--arg=value` form were not detected
correctly (the `-a value` and `--arg value` forms were always detected
correctly, so you can use these with older versions, if necessary).
0.7.4 (2015-08-12):
Major:
- Fix an issue preventing compatibility with Twisted 15.3.0.
0.7.3 (2015-02-08):
Major:
- Fix another major issue involving a bad interaction between legacy items
(mainly in upgraders), and object lifetimes. This is another very important
fix for PyPy users.
0.7.2 (2015-01-08):
Major:
- Fix a major issue involving a bad interaction between weakref semantics and
the item cache. This is a very important fix for PyPy users.
0.7.1 (2014-03-22):
Major:
- Fix some packaging issues that led to some important files being missing
from the 0.7.0 release.
Minor:
- Uses of the deprecated unsignedID and isWinNT Twisted APIs have been
removed.
0.7.0 (2014-01-11):
Major:
- Only Python 2.6 and 2.7 are supported now. 2.4, 2.5 is deprecated.
- setup.py now uses setuptools, and stores its dependencies. This
means you no longer need to manually install dependencies.
- setup.py no longer requires Epsilon for egg_info, making it easier
to install Axiom using pip.
- Significant improvements to PyPy support. PyPy is now a supported
platform, with CI support.
- Axiom now uses the stdlib sqlite3 if pysqlite2 is not available.
Since all supported versions have this, installing pysqlite2 is
now no longer necessary, and is only an (optional) performance
improvement on CPython. This is a huge improvement for PyPy, where
the stdlib version is reportedly much faster.
Minor:
- Passing a string to SubStore.createNew now raises an exception
instead of silently almost certainly doing the wrong thing.
- Setting an integer value that is too negative will now raise an
exception.
- __conform__ (interface adaptation) now also works for items that
are not in a store.
- Starting the store service now automatically activates the
scheduler service as well.
- Batch processing can now be triggered by adding remote work.
- Startup performance for stores with many legacy type declarations
is improved.
- Several benchmarks were added.
- Many internal cleanups.
0.6.0 (2009-11-25):
- Speed up creation, insertion, and various other operations on Item by
optimizing Item.getSchema.
- Improve error reporting from the batch upgrade system.
- Speed up setting attributes on Item instances.
- Remove the batch process manhole service.
- Improve the reliability of some unit tests.
- Fix `axiomatic --reactor ...`.
- Remove invalid SQL normalization code which would occassionally corrupt
certain obscure but valid SQL statements.
- Add an in-memory `IScheduler` powerup for stores and substores.
0.5.31 (2008-12-09):
- An IStatEvent is now logged when a store is opened.
- Different schema versions of the same item type now no longer
compare equal, which fixes some breakage in the upgrade system,
among other things.
- Significantly reduce the runtime cost of opening a store by
reducing the amount of work spent to verify schema correctness.
0.5.30 (2008-10-15):
- Fixed a _SubSchedulerParentHook bug where a transient run failure
would cause future event scheduling in the relevant substore to
fail/traceback.
0.5.29 (2008-10-02):
- Added 'requiresFromSite' to axiom.dependency, expressing a
requirement on the site store for the successful installation of
an item in a user store.
- Made errors from duplicate item type definition friendlier.
0.5.28 (2008-08-12):
- Upgraders can now safely upgrade reference attributes.
- The batch process is no longer started unless it's needed.
- Removed use of private Decimal APIs that changed in Python 2.5.2.
- "axiomatic start" changed to use the public interface to twistd's
behaviour instead of relying on internal details.
- Store now uses FilePaths to refer to its database or files directory.
- Automatic powerup discovery is now a feature of powerups rather
than of axiom.dependency.
- Stores now record the released versions of code used to open them.
- "axiomatic upgrade" added, a command for completely upgrading a store.
- Removed no-longer-working APSW support code.
0.5.27 (2007-11-27):
- Substores and file storage for in-memory stores are now supported.
0.5.26 (2007-09-05):
- A bug where exceptions were raised when tables were created concurrently is
now fixed.
0.5.25 (2007-08-01):
- Added the beginnings of a query introspection API.
0.5.24 (2007-07-06):
- Added a 'postCopy' argument to
upgrade.registerAttributeCopyingUpgrader, a callable run
with the new item after upgrading.
0.5.23 (2007-06-06):
- Fixed a bug where user store insertion/extraction failed if a
SubScheduler was installed but no TimedEvents existed.
0.5.22 (2007-05-24):
- Fixed docstrings in axiom.dependency.
- Scheduler and SubScheduler now declared to implement IScheduler.
0.5.21 (2007-04-27):
- Multi-version upgraders are now supported: an upgrader function
can upgrade items more than a single version at a time.
- Multi-item-class queries now supported: Store.query takes a tuple
as its first argument, similar to a comma-separated column clause
for a SELECT statement in SQL.
- Empty textlists are now properly distinguished from a textlist
containing a single empty string.
- Handling of items scheduled to run with axiom.scheduler being
deleted before they run has been fixed.
0.5.20 (2007-02-23):
- AxiomaticCommand is no longer itself an axiom plugin.
- axiom.test.historic.stubloader.StubbedTest now has an
'openLegacyStore' method, for opening the unupgraded store
multiple times.
- The default argument to Store.getItemByID is now respected in the
case where an attempt is made to load an item which was created
and deleted within a single transaction.
0.5.19 (2007-01-11):
- A new method, axiom.store.ItemQuery.paginate, has been added, which splits
a query's result-gathering work into multiple "pages" so that we can deal
with extremely large result sets.
- A dependency management system for Items has been added in
axiom.dependency. InstallableMixin has been removed;
axiom.dependency.installOn is now used to install Items and connect powerups.
Items can declare their dependence on another item by declaring attributes
with axiom.dependency.dependsOn. When items are installed, their dependencies
will be created and installed as well. Installation is no longer tracked by
'installedOn' attributes but by _DependencyConnector items.
- A bug preventing 'axiomatic userbase list' from working on a fresh
mantissa database has been fixed.
0.5.18 (2006-12-08):
- Change ItemQuery.deleteFromStore so that it will call deleteFromStore on an
Item subclass if it has overridden that method.
0.5.17 (2006-11-20):
- Added fullyQualifiedName to IColumn, _StoreIDComparer, and _PlaceholderColumn.
- Added support for distinct Item queries and for counting distinct attribute
queries.
- Exceptions raised by Axiom upgrade methods are logged instead of silently
swallowing them.
0.5.16 (2006-11-17):
- Updated axiomatic to work with Twisted trunk.
0.5.15 (2006-10-31):
- Raise a more informative exception when accessing Item references pointing
to nonexistent items.
- Enforce prevention of deletion of items referred to by references set to
reference.DISALLOW.
- Tables in the FROM clause of SQL generated by queries are now ordered by the
order of the Item subclasses in the comparisons used to generate them.
- A new IComparison implementation has been added to allow application-level
code to explicitly specify the order of types in the join.
0.5.14 (2006-10-17):
- Added a 'batchInsert' method to Store, allowing insertion of items without
loading them into memory.
- Change ItemQuery.deleteFromStore to delete items without loading them if
possible.
0.5.13 (2006-10-05):
- Changed userbase.getLoginMethods to return LoginMethods rather than
(localpart, domain) tuples.
0.5.12 (2006-09-29):
- Fixed a scheduler bug that would cause tasks scheduled in a substore to be
removed from the scheduler.
0.5.11 (2006-09-20):
- dependency.dependsOn now takes similar arguments to attributes.reference.
0.5.10 (2006-09-12):
- The axiomatic commands "insert-user" and "extract-user" now interact with
the scheduler properly.
0.5.9 (2006-08-30):
- A new dependency-management system has been added, in axiom.dependency.
0.5.8 (2006-08-17):
- The upgrader added in the previous release has been fixed.
0.5.7 (2006-08-14):
- item.Item has a new method, stored, which will be called the first time an
item is added to a store, in the same transaction as it is added.
- A new class, item.Placeholder, has been added to assist in self-join
queries.
0.5.6 (2006-07-18):
- userbase.LoginSystem now raises a new exception type when login is attempted
using a username with no domain part.
0.5.5 (2006-07-08):
- SubStoreStartupService was removed; user stores' services are no longer
incorrectly started when the Mantissa administrative powerup is installed.
- IPowerupIndirector was added, allowing for installation of SubStore items
as powerups on other items.
0.5.4 (2006-07-05):
- Items with attributes.path attributes can now be upgraded.
- axiom.scheduler has been improved to make clock-related tests easier to write.
- Improved test coverage and various bugfixes.
0.5.3 (2006-06-27):
- A bug causing the table name cache to grow too large was fixed.
0.5.2 (2006-06-26):
- Type names are now determined on a per-store basis, rather than cached
globally on the Item.
0.5.1 (2006-06-16):
- axiom.slotmachine._structlike removed in favor of the implementation in
Epsilon, epsilon.structlike.record.
- The batch process has been adjusted to do more work per iteration.
0.5.0 (2006-06-12):
Highlights:
- Fixed several bugs, including several potential data-corruption issues.
All users are recommended to upgrade, but back up your data and test your
upgrade first!
- There is now a 'money' attribute type which uses fixed-precision math in
the database specifically designed for dealing with the types of issues
associated with database-persistent financial data.
- Some simple relational constraints (the equivalent of ON DELETE CASCADE)
have been implemented using the 'whenDeleted' keyword argument.
- Indexes which are created in your code will now automatically be added to
opened databases without requiring an upgrader or a change to your Item's
schemaVersion.
- You can now use 'declareLegacyItem' to declare legacy schemas to record the
schema of older versions of your software -- this enables upgrading of more
than one step per release of your application code.
- You can now create multi-column indexes using attributes.compoundIndex.
---
- Made Item.typeName and Item.schemaVersion optional in most cases.
- Added axiom.batch for reliably operating on large groups of items.
- Removed all usages of util.wait from tests
- added 'queryutil.contains' utility query method, for testing when a value
is between two attributes.
- Added 'negate' argument to oneOf, allowing for issing SQL 'NOT IN' queries.
- Improved reliability of the scheduler. Errors are now logged in a
structured manner.
- Added helper classes for writing axiomatic plug-in commands; see
documentation for axiomatic.scripts.axiomatic.AxiomaticCommand and
AxiomaticSubCommand.
- AttributeQuery now provides .min() and .max() methods which return the
obvious thing.
- Transactions are more managed more conservatively; BEGIN IMMEDIATE
TRANSACTION is used at the beginning of each transact() call, to guarantee
that concurrent access is safe, if sometimes slightly slower.
- SQL generation has been deferred to query time, which means that there is a
more complete API for manipulating Query objects.
- repr() of various objects has been improved for easier debugging.
- Axiom now emits various log events which you can observe if you wish to
analyze query statistics in real-time. These events don't go to the text log by
default: Mantissa, for example, uses them to display a pie chart of the
most expensive queries on a running system.
0.4.0 (2005-12-20):
- Fixed sum() in the case of a table with no rows.
- LoginAccount no longer contains authentication information, but may be
referred to by one or more LoginMethods, which do.
- Added an attribute type for floats: ieee754_double.
- Enhanced functionality in axiom.sequence.List.
- Added support for SQL DISTINCT queries.
- On the command line, axiomatic will attempt to automatically discover
the correct database to use, if one is not specified.
- PID and logfiles are now kept in a subdirectory of the database
directory.
- The "start" axiomatic subcommand now works on Windows.
- Two new axiomatic subcommands have been added related to running servers
from Axiom database: "stop" and "status".
- Two new axiomatic subcommands have been added related to user
management: "extract-user" and "insert-user" for removing users from and
adding users to an existing credentials database, along with all of
their data.
- Axiom queries can now be sorted by a tuple of columns.
0.3.0 (2005-11-02):
- Removed Axiom/axiom/examples/axiom.tac
- Added 'axiomatic start'
- added 'hyper', a 'super' capable of working with Item mixins
- added check to make sure Unicode strings won't be misleadingly persisted as
bytes(), like so:
>>> str(buffer(u'hello'))
'h\x00\x00\x00e\x00\x00\x00l\x00\x00\x00l\x00\x00\x00o\x00\x00\x00'
- formalized and improved query result to be an object with its own interface
rather than a generator
- correctly call activate() on items after they have been upgraded
0.2.0 (2005-10-27):
- Removed accidental Mantissa dependency
- Automatic upgrade service added
- Lots of new docstrings
- Query utility module added, with a function for finding overlapping
ranges
- Added formal interface for the `where' argument to Store.query()
- Added 'oneOf' attribute