- Relax 'path' version restrictions. Allow 2.x versions too.
- Improved the engine implementation for matching and not_matching (Semi::Hash) to avoid unnecessary memory footprint.
- Converted Image as a First-class operator instead of a shortcut one. Comes with a fairly smart implementation that makes a single pass on the right operand, avoid unnecessary memory footprint and puts the proper RVA type, infering it on the fly if required.
- Added a Relvar::Memory abstraction, a test helper for Alf itself and client code.
- Added optimization of restrict over unwrap when the resulting type is known and a proper TupleType.
- Fixed type inference to favor Boolean over TrueClass and FalseClass
- Fixes YAML rendering under ruby >= 2.1. As a nasty side effect, attribute names in TVAs and RVAs will be dumped as Symbols, not Strings...
- No change in this submodule.
- No change in this submodule.
- Fixed Tuple(), it now accepts no argument and returns an empty tuple.
- Fixed inference of common super type when TrueClass/FalseClass/Boolean are involved (for Relation#heading when infered from data).
- Fixed compilation of shortcut operators involving complex expressions.
- Make Ordering#compare robust to the presence of
nil
. - Ensured Engine::Leaf correctly symbolize tuple keys of its input operand.
- Selection now also accepts non-array selections from Symbol and String.
- Relation#to_hash now accepts any Selection-able
from
andto
args.
- Compiler infrastructure entirely rewritten in alf-compiler
- Changed signature of
Adapter::Connection#cog
and associated#to_cog
- Removed
#bind
of algebra expressions everywhere
- Introduced Selector as an ordered list of attribute names. An Ordering is now a list of [Selector, (:asc|:desc)] pairs.
- Introduced Selection as an ordered list of Selectors.
- Accordingly, orderings may now include selections on tuple-valued attributes.
- Added Ordering#[] that returns the direction associated to an attribute.
- Added Ordering#reverse that reverse the direction of every attribute.
- Fixed Ordering#+ to avoid duplicate attributes. This operator is now called
merge
(with alias to+
) and looks like Hash#merge, including an block to arbitrate conflicts. - Removed Keys#compact which was seriously confusing.
- TupleExpression now recognizes Procs of arity 1 and simply call them with the
tuple scope instead of
instance_exec
uting them on the scope. Predicate does something similar when native predicates are used. - TupleExpression optionnaly accepts a connection argument. When the evaluated expression ends-up being a relational expression, the latter is evaluated on the connection and returns the resulting relation. TupleComputation delegates accordingly.
- Added support for qualified identifiers and Predicate#qualify.
- TupleScope now delegates to_s, inspect and [] to the underlying tuple. This should fix the freezing bug that occured when an error was raised during TupleScope-driven evaluations.
- Removed TupleScope#query and TupleScoe#tuple_extract
- Added Relation#to_hash for getting hashes from any attribute pair.
- Added
Viewpoint.(expects,depends)
for declaring expectations and dependencies - Added
Viewpoint.metadata
to query those expectations and dependencies - Added
Viewpoint.build
to build viewpoints (with particular contexts) - Removed
Viewpoint.namespace
, useViewpoint.depends
instead.
- Fixed Project#keys and Project#key_preserving? (same for Clip)
- Added
page
operator (page-index, page-size) implemented throughsort+take
wheretake
is a new engine cog. - Added
frame
operator (offset, limit àla SQL) implemented throughsort+take
as well. - Extend now recognizes Procs of arity 1. Instead of relying on instance_exec, underlying expressions are evaluated by passing a TupleScope to the proc.
- Extend automatically evaluates relational expressions returned by procs, bounding them to the current connection if needed.
- All engine-compiled cogs may optionally be tagged with the expression they
come from (as taken as last argument of initialize, and readable through
expr
). - The default compiler uses this feature so that algebra expressions can be tracked back from compilation results.
- Adapter::Connection#cog now takes an optional
expr
parameter for traceability with algebra expressions. The resulting cog is expected to be tagged accordingly.
- Added a
Ruby
input reader mapping to '.rb' and '.ruby' files. - Reader no longer includes
Engine::Cog
.Adapter::Folder::Connection
correctly adapts itscog
method to return an Engine::Leaf instance that delegated to the reader itself.
- The
default_viewpoint
option has been renamedviewpoint
- Empty lines are silently ignored by .rash reader
- Added Viewpoint#members
The 0.13.0 version is a new birthday for alf. See alf
main for CHANGELOG
history.