on master help sign in
project-m36/Changelog.markdown
130 lines 6.4 kB history raw
1# 2021-04-01 (v0.9.3)
3* add new ":importtutd <URI> <SHA256 hash>" feature to import TutorialD from a local file or a HTTP/HTTPS URI
4
5# 2020-12-27 (v0.9.0)
7* replace unmaintained distributed-process-client-server RPC package with new curryer RPC package
8* drop support for GHC 8.2 and GHC 8.4 due to dependency on DerivingVia extension
10# 2020-11-21 (v0.8.2)
12* support multiple extend expressions in TutorialD
13* fix parsing of Bool atoms in TutorialD
14* fix database context expressions which include self-references such as `s:=s union s`
15* show constraints as TutorialD when using tutd console
16* add `RelationalExprAtom` data type useful for storing `RelationalExpr` within the database
18# 2020-10-05 (v0.8.1)
20* support GHC 8.10
22# 2020-05-25 (v0.8)
24* refactor backend to maximize laziness: [An Architecture for Data Independence](docs/data_independence.markdown)
26# 2019-09-07 (v0.7)
28* fix case sensitivity issue with relation variables in tutd
29* fix multibyte escaping in data frames
30* fix broken instances of `Atomable [a]`
31* fix `TypeConstructor` validation of argument count
32* add help option to executables
34# 2019-01-08 (v0.6)
36* fix atom type parsing to support more complex data types
37* add [data frames](docs/dataframes.markdown) to support server-side sort ordering, limits, and offsets
39# 2018-10-03 (v0.5.1)
41* fix atom function type validation
42* add support for GHC 8.4 (now we support GHC 8.0, 8.2, and 8.4)
44# 2018-08-10 (v0.5)
46* fix critical type bug which allowed unresolved types to be used
47* add full support for GHC 8.2 with stack or cabal (delayed for a long time by dependency version boundaries)
48* drop support for GHC 7.10
49* add support for `with (relexpr as name,...)` syntax for use as tutd macros
50* add `NonEmptyList` list data type
52# 2018-06-04 (v0.4)
54* add contributed feature to allow users to [create arbitrary relations](https://github.com/agentm/project-m36/blob/master/docs/tutd_tutorial.markdown#arbitrary-relation-variables)
55* fix type validation bug allowing concrete type with type variables in relations
56* improve usability of `Interval a` data type
57* allow `Integer` to be parsed as negative in `tutd` console
58* support precompiled (Haskell) [`AtomFunction`s](https://github.com/agentm/project-m36/blob/master/docs/atomfunctions.markdown#pre-compiled-atom-functions) and [`DatabaseContextFunction`s](https://github.com/agentm/project-m36/blob/master/docs/database_context_functions.markdown#loading-precompiled-modules)
59* make TutorialD scripts read from the filesystem unconditionally read as UTF-8
60* improve support for display of multibyte characters in `tutd` console, especially Chinese
61* fix file descriptor leak in file sychronization
62* improve reliability by allowing fast-forward commits when using `autoMergeToHead`
63* add [`semijoin` and `anitjoin`](https://github.com/agentm/project-m36/blob/master/docs/tutd_tutorial.markdown#join) support to `tutd`
64* added various new static optimizations
66# 2017-11-14
68* alter websocket server API to allow for multiple representations (JSON, text, or HTML) to be selected and returned simultaneously
69* add jupyter kernel for TutorialD interpreter
70* fix warnings suggested by new hlint 2.0.10
72# 2017-10-08 (v0.3)
74* replaced overuse of `undefined` with `Proxy` in `Tupleable` and `Atomable` typeclasses
75* allow notifications to return query results from before *and* after the commit which triggered the notification
76* alert users in `tutd` console before a transaction graph expression is evaluated which would throw out their changes
77* drastically-improved CSV import/export now supports all possible types except `RelationAtom`
78* fix serious file handle leaks when using on-disk persistence
79* fix case where invalid number of arguments to `ConstructedAtom` did not result in an error
80* add support for `IntegerAtom` (previously, only `IntAtom` was supported)
82# 2017-09-16 (v0.2)
84* a new [simple client API](https://github.com/agentm/project-m36/blob/master/docs/simple_api.markdown) with a monadic transaction manager
85* complete hlint compliance
86* the generics-based [Tupleable typeclass]( https://github.com/agentm/project-m36/blob/master/docs/tupleable.markdown
87) which makes it easy to marshal Haskell data types to-and-from the database
88* timestamps attached to transactions to allow specific point-in-time travel
89* autoMergeToHead, a variant of commit which attempts to merge and commit to the latest head transaction to reduce incidents of TransactionNotAHeadErrors
90* interval data types
91* transaction dirtiness detection which allows the client to determine if an update expression actually changed the database state
93# 2017-08-01
95## autoMergeToHead
97In preparation for the simpler monad client API, ProjectM36.Client now includes a server-side merge for new transactions called "[automerge](https://github.com/agentm/project-m36/issues/33)". This feature should reduce head contention in cases where new transactions can be simply merged to the head without additional processing. The trade-off is reduced ```TransactionIsNotAHeadError```s but an increased chance of merge errors. The feature operates similarly to a server-side git rebase.
99## critical bug in merging
101Successfully merged transactions did not have their constraints validated. Fixed.
103# 2017-06-12
105## add file locking
107This [feature](#102) allows Project:M36 database directories to be shared amongst multiple Project:M36 processes. This is similar to how SQLite operates except that the remote server mode supports the feature as well. This could allow, for example, multi-master, file-based replication across Windows shares or NFS.
109[Documentation](/docs/replication.markdown)
111# 2016-11-30
113## add functional dependency macro
115Date demonstrates two ways to implement functional dependencies as constraints on page 21 in "Database Design and Relational Theory". A similar macros is now implemented in the tutd interpreter.
117```funcdep sname_status (sname) -> (status) s```
119[Documentation](/docs/tutd_tutorial.markdown#functional-dependencies)
121# 2016-09-07
123## add TransGraphRelationalExpr
125The TransGraphRelationalExpr allows queries against all past states of the database.
127The following example executes a query against two different committed transactions using syntax similar to that of git for graph traversal:
128```:showtransgraphexpr s@master~ join sp@master```
130[Documentation](/docs/transgraphrelationalexpr.markdown)