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.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.
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
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.
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
-
Editing in untitled files (https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#documentFilter) caused an error in the language server which stopped parsing.
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.
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).