Releases: vmware/differential-datalog
DDlog v1.2.3
DDlog v1.2.2
[1.2.2] - Dec 9, 2021
Bug fixes
- Fix jump-to-record functionality in HTML profiles.
DDlog v1.2.1
[1.2.1] - Dec 8, 2021
Bug fixes
- Fix row highlighting in HTML profiles.
DDlog v1.2.0
[1.2.0] - Dec 8, 2021
Bug fixes
- Fix broken command recording in the
DDlogDynamic
API.
SQL-to-DDlog compiler
- More efficient joins
- Bug fixes
Self-profiler
- Add anchors to the profile, so one can create hyperlinks to individual profile
entries.
DDlog v1.1.0
[1.1.0] - Nov 12, 2021
Rust API changes
- Feature-gate
AnyDeserialize
impl. The DDlog compiler generates an
implementation of theAnyDeserialize
trait, which allows clients to
deserialize instances ofddlog_std::Any
provided they know relation id of
the value being deserialized. This feature is not used by most applications,
but can cause significant code bloat and slow down compilation. We
feature-gate this impl, so that only users who require this functionality
have to pay the price.
DDlog v1.0.0
[1.0.0] - Nov 9, 2021
Self-profiler revamp
The self-profiler remains a useful tool for troubleshooting DDlog performance
issues. It runs with low overhead, allows enabling/disabling CPU and change
profiling at runtime to only instrument parts of the program, and because it is
integrated into the DDlog runtime it can precisely match each DD operator to the
corresponding DDlog operator. DDshow does not currently have these features.
In this release we revamp the self profiler to improve its ergonomics. The new
self-profiler has the following features:
-
Produces profiles in the form of interactive HTML tables. Each
row in the table represents a DD operator and contains operator
description, e.g., "Arrange relation 'Rel1' by 'x,y,z'" along with
links to one or more source code location that this operator
corresponds to (e.g., all locations where this specific arrangement
of 'Rel1' is used). -
The new
dump_profile
API dumps the profile into an HTML file
on the disk instead of returning it as a string. All profiles
generated by the same process are generated in the same folder, even
if the process creates multiple instances of DDlog. This folder
also contains a complete snapshot of all DDlog code in the
program, so that the profiler can show program sources even when
the program does not run on the same system where it was compiled. -
Internally, the self-profiler represents profiles using a
well-defined JSON format. New APIs were added to extract
each of the four profiles currently supported by DDlog (arrangement
size profile, peak arrangement size profile, change profile, and
CPU profile) in the JSON format, for automatic processing by
third-party tools.
DDlog v1.0.0-alpha
This release includes a revamped self-profiler as a feature preview for testing and evaluation only.
DDlog v0.50.0
[0.50.0] - Oct 20, 2021
Libraries
internment.dl
: optimized the implementation ofIntern::default()
to avoid
excessive heap allocations and contention.
API changes
ddlog_clone()
: C and Java API to clone addlog_record
.
Bug fixes
- Fixed parser bug caused by grammar ambiguity whereby
index
could be interpreted
as part of an index declaration or as a regular identifier.
DDlog v0.49.0
[0.49.0] - Oct 4, 2021
New features
-
Rust compilation option
checked_weights
for the code generated by
DDlog, which will crash DDlog programs at runtime if they overflow the
weights attached to data values. This may be preferable to generating
incorrect results. -
Add queryIndex Java API (#1093)
Bug fixes
- Closures that depend on generic types generate invalid Rust (#1072).
FlatBuffers
- Upgrade to FlatBuffers v2.0.0. The previous version of FlatBuffers used in
DDlog is not compatible with recent OS X releases.
SQL-to-DDlog compiler
DDlog v0.48.2
[0.48.2] - Sep 13, 2021
Bug fixes
- Fixed a bug in the implementation of
Intern<>
that could lead to incorrect
behavior of comparison operators andhashXXX()
functions.