Release notes

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog (https://keepachangelog.com/en/1.1.0/) and this project adheres to Semantic Versioning (https://semver.org/spec/v2.0.0.html).

1.7.2

Added

  • Added support for Parquet schema inference (works indifferently from a directory or a single file).

  • Added schema inference to documentation.

1.7.1

Added

  • Added Copilot instructions for teaching Copilot to write in Vadalog!

  • Added Copilot prompt /vadoc for writing Vadoc atom/variable documentation.

  • Added /manual command for Vadacoder.

  • Added command to automatically install Copilot assets (instructions and prompts) into workspace folder.

  • Binding inference can now create @ mapping fields.

  • Added new diagnostic that verifies if a @ bind has been declared as input or output.

  • Added new diagnostic that checks if variables are used in facts.

  • Moved out negation check from warded, as we ensure well founded negation for all fragments.

  • Improved negation check (follows condition 2 of vadalog.org documentation).

  • Added Copilot documentation in manual.

  • Added Log documentation in manual.

  • Added an autoswitch flag (defaulting to true) that opens automatically Vadalog panel whenever code is executed.

  • Added an automatic checks that fails when packaged VSIX is above allowed budget (currently, 3MB).

Changed

  • Now existential variables are written as a logic expression, like ∃Y,Z:head(X,Y,Z) :- body(X).

  • @ post annotations now support atom tokens.

  • Heavily reduced manual payload size to improve rensposivity of Copilot responses on manual.

  • Console errors upon bad responses from reasoner have been improved.

  • Refactored Vadacode project automatic crawling of .vada files to improve async performances.

  • Added maxFilesPerProject setting to limit indefinite crawling in big workspaces. Limit does not hinder single-file accesses.

  • Optimization of reparsing upon changed fragment messages.

  • Restored log functionality.

  • Now you can cancel project creation, no vadaconfig.json will be created.

  • Unused variables have now their own semantic modifier (deprecated).

Fixed

  • Fixed safe taintedness check (now it looks at every rule of program instead only to EGDs).

  • Renaming variables now does not cause unwanted changes in other variables in the rule.

  • Now @ input predicates can be correctly documented in Vadoc even in presence of @ mapping (Vadoc documentation takes precedence).

  • Added more conditions in which the parser does not throw when code is half-done (normal situation during development).

  • Fixed a problem causing multiple projects to be created when opening files in the same directory.

  • When a document is closed (and this includes when the respective file is deleted), diagnostics are removed.

  • @ library is now correctly parsed with two optional fields.

  • Severity codes for errors is now automatically aligned to that of documentation.

  • Fixed a race condition which could cause two projects/clients to be created for the same workspace, which caused (among others) duplication in diagnostics.

1.7.0

Added

  • All errors point to vadalog.org webpage for improving user experience.

  • When writing a @bind annotation, two inlay handy buttons allow you to instantly test the datasource binding and automatically infer the schema from its data.

  • Inferred schema is automatically added as a Vadoc snippet.

  • Vadacode has a Fragment setting which allows you to specify a Datalog+- reference fragment, which defines each a set of syntactic restrictions.

  • Vadacode supports the following Datalog+- fragments:

  • Plain Datalog

  • Linear

  • Afrati Linear

  • Warded

  • Shy

  • Guarded

  • Weakly Guarded

  • Weakly Frontier Guarded

  • Frontier Guarded

  • Fragment can be selected in the status bar.

  • When selecting a Fragment, you are given the option to "Show all violations", which imposes all fragment constraints simultanously.

  • When selecting a Fragment, you can select even "Datalog ∃" which imposes no constraints on the syntax.

  • When selecting a Fragment, you can run an auto-detection which selects the smallest fragment for which constraints are respected; when multiple fragments match, the first one in a priority list is selected.

  • Fragment selection is stored in global state, so it’s available when you run in your next session.

  • Fragment selection defaults to Warded Datalog+-.

  • Added support for the renaming of variables (before you could only rename atoms).

  • Semantic highlighting now highlight atoms in annotations (input, output, bindings, mappings).

  • Added more information to atom and variable hovers.

  • Added a thorough textmate grammar for improving user experience (semantic highlight is slower and poses noticeable delays in parsing).

  • Atom signature is inferred from use even for non-bound @inputs.

  • Introduced custom colors for labeled nulls (variables in affected positions).

  • Added diagnostic for multiple @bind statements on the same atom.

  • Added diagnostic for extensional data sent to output.

Changed

  • Since sometimes VSCode output tab does not follow automatically logs, now they are automatically updated with an interval defined in settings.

  • Massive refactor of codebase to enforce code isolation for fragment checks and several diagnostics.

  • Diagnostics can now have rule-level span (e.g. some fragment checks).

  • Inputs are now semantically marked as extensional, the way facts are.

Fixed

  • Warded checks include Safe taintedness conditions when using EGDs.

1.6.1

Changed

  • Updated demo scripts after internal presentation to streamline speech;

  • Now error source is not added to diagnostics hover descriptions, will be restored later on;

  • Removed old diagnostics from manual (they are now automatically generated in a dedicated diagnostics page).

1.6.0

Added

  • Atom signatures now include variables.

  • Outline now include variables.

  • Atom signatures are now inferred from facts, inputs (using mappings) and Vadoc comments.

  • Variables which should be made anonymous trigger a warning.

  • Atom references are checked vs atom signature to diagnose bad usage.

  • Annotation references are checked vs atom signature to diagnose bad usage.

  • Added a new thorough diagnostic codes page in the manual, automatically generated.

  • Added a new code action to replace anonymous variables.

  • Introduced semantic coloring for numbers and booleans.

  • Added a diagnostic to detect missing mappings.

  • Introduced Copilot annotation command for Vadalog coding hints (still a stub, doesn’t do anything useful).

  • Introduced @vadacoder chat participant with knowledge of Vadalog manual.

  • Variables used in conditions not bound to any atom are now detected (since 1.5.1).

  • Editor now has the play button to execute code.

  • Added first debug log functionality (note: the log is not watched, will be reworked in the future).

Changed

  • Reworked project files loading using VS Code workspace.fs for filesystem operations.

  • Reworked atom signature detection and used it both for hover definitions, both for diagnostics.

  • Now vadoc documentation merges with the schema inferred by atom usage.

  • Now wardedness is checked applying recursively the propagation of nulls and affected positions.

Fixed

  • Fixed a problem causing ENOENT errors in Windows when opening workspace folders with .vada files.

  • Moved out development information from README.

  • Updated various tests.

  • Fixed an issue with vadoc parsing causing comments to be dropped when no traling space was present.

  • Outline included quoted atom names for `@input`statements.

  • Existential variable detection has been improved (e.g. now conditions are checked).

  • Vadalog panel (bottom) is now shown at startup to force its creation.

1.5.1

Added

  • Affected positions are now propagated recursively.

  • Navigation menu now has a handy "play" button for running Vadalog programs.

Fixed

  • W.r.t. fragment detection, variables that break the ward are counted for each body atom even if with the same name (self-join).

Changes

  • Variables that break the ward are now highlighted in the body rather than in the head.

1.5.0

Added

  • Added a demo/ folder with several Vadalog programs and demonstration of Vadacode features.

  • Introduced fragment analysis documentation to describe Warded Datalog +/- analyses performed on code.

  • Introduced initial support for EGDs harmless sufficient condition detection.

  • Added a check for undeclared variables used in conditions.

  • Added inline documentation for all annotations (e.g. @post, @bind).

Changed

  • Now EGDs and payload @outputps are hinted as such using VSCode hint squiggles.

  • Now existential variables are marked as such (shown in a different color and annotated in hover boxes) when used in existential positions of atoms (basically, now we mark labeled nulls instead of existentials to ease the developer in tracking nulls).

  • Now @input/@output with empty atoms have more descriptive errors.

Fixed

  • Using EGDs, some atoms were erroneously warned as unused.

  • Fixed outline sometimes reporting quoted atoms.

1.4.3

Changed

  • Getting started image.

1.4.2

Changed

  • Minor docs refinements for publication.

1.4.1

Added

  • Now Vadacode supports editing of untitled Vadalog files (files which have not been written to disk yet);

  • Vadacode now has two very quick walkthroughs to get started with Vadalog development, which provide step-by-step instructions for onboarding users.

Changed

  • Now you can evaluate (through command or shortcut) any Vadalog program independently from the fact that it’s an untitled or a saved file and from its extension.

Fixed

1.4.0

Added

  • Introduced code execution command: now you can execute a Vadalog program, using the Vadalog: Evaluate program or the ctrl+shift+enter shortcut while a .vada file is openend in the editor. Handy!

  • Added documentation for code execution and Visual Studio Code Vadalog notebooks;

  • Added smoke tests on Visual Studio Code .vsix extension to guarantee working package.

Fixed

  • Hotfix (missing dependency breaking extension startup);

  • Vadacode logo is now correctly shown in README (in Visual Studio Code, go to Extensions > vadacode).

Removed

  • Removed unused settings.

Security

  • Updated all package versions to reach 0 vulnerabilities.

1.3.0

Added

  • Introduced evaluation of existential, harmful and dangerous variables; introduced diagnostic for programs that go outside Warded Datalog± segment; added semantic tag for existential variables.

  • Added semantic tag for the anonymous variable (_) and implication sign.

  • Refined rollup build to ignore non-offending warnings.

  • Now notebooks support the interruption of inflight HTTP requests, which may prove useful if notebook stays pending while waiting for the server (though Vadalog doesn’t support canceling of active jobs).

1.2.1

Added

  • CHANGELOG is now visible in extension page.

Changed

  • Refined modules documentation.

1.2.0

Added

  • Introduced two new code actions for unused atoms: adding the @exports statement and removing the rule generating the atom.

Changed

  • Refactor of module update logic to streamline dependency management.

Fixed

  • Now the including program does not show issues deriving from included modules (e.g. unused atoms).

  • Atoms used in both recursive and non recursive rules are no more reported as unused.

  • Notebooks don’t report anymore the "unimplemented scheme" exception.

1.1.0

Added

  • Finished rework of modules; named modules are now supported (using @include and @module syntax).

1.0.0

Added

  • First stable release.