on YuMingLiao-feature/add_with_relvar_macro
help
sign in
3* 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)
4* fix type validation bug allowing concrete type with type variables in relations
5* improve usability of `Interval a` data type
6* allow `Integer` to be parsed as negative in `tutd` console
7* 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)
8* make TutorialD scripts read from the filesystem unconditionally read as UTF-8
9* improve support for display of multibyte characters in `tutd` console, especially Chinese
10* fix file descriptor leak in file sychronization
11* improve reliability by allowing fast-forward commits when using `autoMergeToHead`
12* add [`semijoin` and `anitjoin`](https://github.com/agentm/project-m36/blob/master/docs/tutd_tutorial.markdown#join) support to `tutd`
13* added various new static optimizations
17* alter websocket server API to allow for multiple representations (JSON, text, or HTML) to be selected and returned simultaneously
18* add jupyter kernel for TutorialD interpreter
19* fix warnings suggested by new hlint 2.0.10
23* replaced overuse of `undefined` with `Proxy` in `Tupleable` and `Atomable` typeclasses
24* allow notifications to return query results from before *and* after the commit which triggered the notification
25* alert users in `tutd` console before a transaction graph expression is evaluated which would throw out their changes
26* drastically-improved CSV import/export now supports all possible types except `RelationAtom`
27* fix serious file handle leaks when using on-disk persistence
28* fix case where invalid number of arguments to `ConstructedAtom` did not result in an error
29* add support for `IntegerAtom` (previously, only `IntAtom` was supported)
33* a new [simple client API](https://github.com/agentm/project-m36/blob/master/docs/simple_api.markdown) with a monadic transaction manager
34* complete hlint compliance
35* the generics-based [Tupleable typeclass]( https://github.com/agentm/project-m36/blob/master/docs/tupleable.markdown
36) which makes it easy to marshal Haskell data types to-and-from the database
37* timestamps attached to transactions to allow specific point-in-time travel
38* autoMergeToHead, a variant of commit which attempts to merge and commit to the latest head transaction to reduce incidents of TransactionNotAHeadErrors
40* transaction dirtiness detection which allows the client to determine if an update expression actually changed the database state
46In 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.
48## critical bug in merging
50Successfully merged transactions did not have their constraints validated. Fixed.
56This [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.
58[Documentation](/docs/replication.markdown)
62## add functional dependency macro
64Date 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.
66```funcdep sname_status (sname) -> (status) s```
68[Documentation](/docs/tutd_tutorial.markdown#functional-dependencies)
72## add TransGraphRelationalExpr
74The TransGraphRelationalExpr allows queries against all past states of the database.
76The following example executes a query against two different committed transactions using syntax similar to that of git for graph traversal:
77```:showtransgraphexpr s@master~ join sp@master```
79[Documentation](/docs/transgraphrelationalexpr.markdown)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list