Wollok Version: 3.1.9
- Update Wollok version.
- Fixed #159 and #164 - Singleton abstract methods validation
- Fixed #172 - Filtering wollok base frames from stack trace & adding constants
Wollok Version: 3.1.8
- Update Wollok version.
- Fixed validation
shouldNotDuplicateEntities
for programs and globals. uqbar-project#157 - Fixed
malformedSentence
error for return methods. uqbar-project#162 - Split validation
shouldInitializeAllAttributes
in two. uqbar-project#161
Wollok Version: 3.1.7
- Update Wollok version.
- Fixed linking packages with the same name.
Wollok Version: 3.1.6
- Update Wollok version.
- Fixed buggy validations over incomplete AST.
Wollok Version: 3.1.3
- Adding mechanism to get possibly uninitialized lazy values without raising.
- Cleaned up uses of lazy fields to handle the posibility of the field not being there when reasonable (such as
parent
infullyQualifiedName
) - Improving type exclussion for models with the same structural definition.
Wollok Version: 3.1.3
- Updated TypeScript version to
4.9
- String-based Kinds and Categories were replaced with TypeScript classes and mixins (class constructor functions). All related methods were updated accordingly.
match
method in Nodes replaced in favor of genericmatch
function.- Several non-breakable, no-argument methods where replaced with computed properties.
- Dropped
isNode
function in favor ofinstanceof Node
notation. cached
decorator now supports properties as well as methods.- Dropped exposed
Node
methods that asumed a sibling order. - Added methods in
Literal
node to check value type. - Dropped
defaultFieldValues
in favor of the cleanerdefaultValueFor
method. - Renamed
Variable.isGlobal
to the more accurateisAtPackageLevel
.
- Recover from malformed sentence on parse.
- Fixed some validations:
- Reassign constant values
- Missing references
- Changed
kindName
primitive method implementation. - Fixed re-link Envirionment algorithm.
- Moved local game code to language project.
- Fixed bug where closures where unable to retain self reference when nested inside other closures.
- Updated to official Wollok Language 3.1.1 version.
- Fully qualified references to singletons are now valid expressions.
- Linker now has a new operation to link a stand-alone sentence.
- Added error recovery to File parser.
- General improvement to error recovery patterns.
- Package constructor now accepts fully qualified names and build the whole hierarchy.
- Added
getNodeOrUndefinedByFQN
and ``getNodeOrUndefinedByQN` methods for retrieving nodes by name without raising an error if not found. - Fixed linking error where imports where lost after merge.
- Fixed
shouldHaveAssertInTest
validation bug
- Fixed bug where validator would skip nested linker and parser errors
- Fixed broken import in index
- Annotations.
- Lazy operators are now handled in runtime instead of being filled in the parser.
- Anonymous Singleton expressions are no longer container within a Literal node.
- Fixed bug where imports would resolve on local definitions.
- Fixed bug where methods with bodies would return the last expression, even without a
return
clause. - Fixed linearization to properly avoid repetitions in hierarchy.
- Added options parameter to lookupMethod (allow abstract method to be included, lookup start FQN module moved into this parameter).
- Added validation functions based on @Expect annotation.
- SourceMaps are now custom classes with better string conversion logic.
- Better string conversion logic for nodes (short and verbose labels).
- Changed Node's
environment
andparent
to be fields instead of methods. - Linker no longer relies on the standard cache.
- Added
@lazy
decorator for readonly node fields that are eventually initialized during the pipeline. - Cache is now decoupled from nodes.
- Updated to official Wollok Language 3.0.3 version.
- Updated to official Wollok Language 3.0.2 version.
- Executions now admit to have
void
return type, to avoid forcing unnecesary return ofundefined
. - Evaluation
list
andset
methods now have varargs. - Evaluation
invoke
method is now split intoinvoke
for methods andsend
for messages. - RuntimeObjects now have a series of messages to retrieve their inner values by type
- New Interpreter interface
- Evaluation can now retrieve WKO with the
object
message. - Frames are now contexts themselves and contain more debugging info.
- Exceptions now delegate on inner Wollok Exception instances to get the stack trace.
- Updated to official Wollok Language 3.0.0 version.
- Only anonymous object literals and closures will be bound to their original context from now on.
- Number and String uniqueness will be maintained with weak references from now on.
- Dropped float number uniqueness.
- Methods now have
isConcrete
andisNative
methods.
- Implemented Wollok 3.0.0 support
- Removed Constructors
- Removed instantiation with unnamed arguments
- Removed anonymous class instantiation in favor of unnamed object literals
- Removed Fixtures
- New homogeneous linearization syntax
- Describes are now Modules and have Fields instead of Variables
- Fields and Variables' attribute
isReadOnly
has been renamed toisConstant
- Replaced bytecode compiler with (a little slower, but easier to maintain) pure AST interpreter
- Fixed filenames in node's source: Now is the whole filename, with extension and dirs
- The source's file is now defined as a
fileName
property in Package so it doesn't need to be saved in each node - New
isSynthetic
method for all nodes
- Fixing building process in bad release
- Removed Stages from model so TypeScript stops crashing :(
- Replaced model builders with better constructors
- Discarded unnecesary Filler pipeline stage (filling is now handled in the constructors)
-
Masive reification. Most concepts previously represented by Ids are now reified into instances.
- Operand Stacks are now filled with Runtime Objects instead of ids.
createInstance
now returns RuntimeObjects.- Runtime Objects are now their own context.
- Contexts now have a rich interface and their parents are now Contexts themselves instead of ids.
- Reified Stacks into a class with rich interface.
- Context Table is no more.
-
Refactored the Interpreter abstractions to make them more cohesive and improve discoverability.
- Cleaner exported interface for Interpreter module.
- Cleaner interface for Evaluation.
- Cleaner Frames.
- RuntimeObject now has factory methods to retrieve/create them.
- Numbers, Strings, and Booleans are now retrieved instead of created.
- Replaced
Evaluation.sendMessage
with the more usefulEvaluation.invoke
. - Dropped
runTest
andrunProgram
functions from the Interpreter. The plan is to create a nicer, separate facade for end users to perform this sort of single-time operations, that can hide the complexities (we will do this eventually).
-
Plenty of improvements in interpreter algorithm.
- Cleaner lazy initialization.
- Cleaner raise of exceptions.
- Waaay faster.
-
Some quality of life changes.
- Evaluation receives the root context as argument.
- Automatically stepping initialization on Evaluation creation.
- Added
log
as an attribute of Evaluation to allow non-global configuration. - Added
natives
as an attribute of Evaluation to avoid passing them as parameters all the time. - Evaluations can now safely deep-copy themself.
-
Complete test overhaul.
- Cleaner descriptions, easier to maintain that are based on describing the expected deltas instead of the before/after scenarios.
- New assertions and cleaner mocks.
- Here be dragons.