Dyvil v0.23.0
- Added a new Statement Label syntax using the
label
keyword. #295 - Added the
**
exponentiation operator. - Added the
label
keyword. #295 - Added support for Implicit Type Conversion Methods. #170
- Deprecated the old C-Style Statement Label syntax. #295
- Dropped support for explicit
this
andsuper
typing with Square Bracket syntax. - Dropped support for the Hash Symbol to be used to suppress Semicolon Inference.
- Overload Resolution now respects generic types correctly. #281
- Primitive Types are now available as static method call receivers.
- Removed the
nil
andnull
Class Modifiers. - Type Parameters can now be optionally declared with the
type
keyword between Annotations and the Variance Symbol or Name.
Dyvil Library v0.23.0
- Adapted library classes to new
prefix
semantics. - Added Implicit Range → Array Conversion Methods to the Array classes.
- Added Primitive
to*Array
methods for PrimitiveRange
classes. - Added Range Operator Functions for Primitives and
Rangeable
s. - Added
pow
implementations for integer andBigDecimal
exponentiation in thedyvil.math.PowImpl
class. - Added the
**
operator forBigInteger
s andBigDecimal
s. - Added the
BigDecimalOperators
class to allow math operators to be used withBigDecimal
s. - Added the
BigIntegerOperators
class to allow math operators to be used withBigInteger
s. - Added the
FileUtils.antToRegex(String)
method. - Added the
LanguageFeatures.convert<T>(T): T
method to apply implicit conversions easily. - Fixed the
toArray
implementations of all PrimitiveRange
classes. - Fixed the return types of the
Collection.union(Collection)
,.difference(Collection)
,.intersection(Collection)
andSet.symmetricDifference(Collection)
methods using wildcards. - Improved the
Name
caching implementation. - Increased the default capacity for Array-based Lists and Maps from 10 to 16.
- Made the
TryParserManager
class more usable by abstracting token caret internals away with thetryParse
method. - Moved the utility methods for qualifier <->︎ unqualified Name conversions from the
BaseSymbols
class to theQualifier
class. - Overloaded the return type of Primitive Range
toArray()
methods. - Removed deprecated
TryParserManager.parse(…)
methods. - Renamed the
IParserManager.jump(IToken)
and theTokenIterator.jump(IToken)
methods tosetNext
. - Updated all Array factory Methods.
- Updated the
LanguageCommons
class to fix an Overload Error. - Updated the
Modifiers
class. - Updated the
Name
factory methods.
Dyvil Compiler v0.23.0
- Adapted the
StatementListParser
class to theTryParserManager
changes. - Adapted to
Name
interface changes. - Added a Name hash cache for Methods, Properties and Fields in Class Bodies.
- Added a
ClassBody
cache for Implicit Conversion Methods. - Added a localization key for 'Argument Types: ...'
- Added a warning for automatically name-mangled methods.
- Added missing Syntax Marker messages for Class and Type Operators.
- Added special error markers for ambiguous method, constructor and initializer calls. #280
- Added support for Generic Method Overloading using Name Mangling.
- Added the
IArguments.copy()
method and implemented it in subclasses. - Added the
IContext.getConstructorMatch(…)
method. - Added the
IImportContext
class. - Cleaned up the Method and Constructor Resolution implementations.
- Completely overhauled Method Overload Ordering. #281
- Dropped Compiler support for the
nil
andnull
Class Modifiers. - Fixed Anonymous Classes being decompiled in some cases.
- Fixed Cast Operators not accepting Type Parameter types.
- Fixed External Parameter Type Annotations decompilation causing type resolution.
- Fixed Postfix Operators consuming the opening brace of If, While and For Statements.
- Fixed incorrect Super Type Checking for Wildcard Types.
- Fixed special Operators within Expressions causing Compiler Errors. #282
- Fixed the
Candidate.compareTo(Candidate)
method implementation violating parts of theComparable
contract. - Fixed the
ColonOperator.isResolved()
method implementation. - If, While, Match and Synchronized Statements no longer have special grammar cases for an opening brace after the keyword. #283
- Implemented Implicit Conversion Method Resolution for
IContext
subclasses and others. - Implemented
IImplicitContext
methods forIType
subclasses. - Implicit Conversions are now resolved via the
TypeChecker.convertValueDirect(...)
method. - Implicit Conversions are now resolved via the
TypeChecker.getTypeMatch(IValue, IType, IImplicitContext)
method. - Implicit Search now uses the target type as well.
- Improved Semicolon Inference performance by merging the inference and linker loops.
- Improved
ClassBody
initialization by lazily initializing the Property and Initializer arrays. - Improved static Method resolution when applied for the wrong type.
- Improved the Syntax Error for Prefix Operators without an operand.
- Improved the
IStatement.checkStatement(…)
method implementation. - Made the
ForEachStatement
andTryStatement
classes useIStatement.checkStatement(…)
method. - Made the
IMemberContext
interface extendIImplicitContext
. - Made the
LiteralConversion
class extendAbstractCall
instead ofMethodCall
. - Made the
MatchList<T>
classIterable<Candidate<T>>
. - Merged the
MethodMatchList
and theConstructorMatchList
classes. - Method Resolution now takes all available implicit conversions for the receiver into account.
- Moved the
CompoundCall
methods to theInfixCall
class. - Removed all methods used to compute ‘distances’ between types.
- Removed the
IStatement.checkCondition(…)
method. - Removed the
RangeOperator
class. - Removed the special semantics of the
prefix
keyword. #286 - Renamed most occurences of
instance
wherereceiver
was meant. - Renamed the
ExpressionParser.addFlag(int)
and.removeFlag(int)
methods toaddFlags
andremoveFlags
. - Renamed the
ExpressionParser.withFlag(int)
andMemberParser.withFlag(int)
methods towithFlags
. - Simplified the
LiteralConversion
class by making it extendMethodCall
. - Simplified the
NilExpr
implementation by making it extendLiteralConversion
. - Static Methods can now be accessed from non-static expressions.
- The
ClassBody
,ClassMetadata
andCaseClassMetadata
classes now use theIContext.getConstructorMatch(…)
method. - The
IConstructor.getSignatureMatch
method now takes anIImplicitContext
parameter. - The
IMethod.getSignatureMatch
method now takes anIImplicitContext
parameter. - The
IParserManager.report(IToken, String)
method now takes anICodePosition
instead of anIToken
. - The
MethodMatchList
andConstructorMatchList
classes now store anIImplicitContext
. - The
SideEffectHelper.processArguments(IArguments)
now makes and returns a defensive copy of the argument list. - The
exclude
config entries can now use Ant-style filename patterns. - The
fullName
andinternalName
are now computed lazily for theCodeClass
class. - The
implicit
Modifier can now be used on Methods. - The
prefix
keyword now works as an alias forstatic
. #286 - The methods defined in the Primitive Wrapper classes now take priority over methods defined in the
Primitives
class. - Updated Method Overload Ordering to use are more reliable system to check for the most specific type. #281
- Updated Qualified Type resolution in Expression contexts.
- Updated Range For Statement handling to not rely on
RangeOperator
s anymore. - Updated and fixed Wildcard Type checking.
- Updated the
AbstractMethod.getSignature()
method by moving theneedsSignature()
method and calls to theCodeMethod
class. - Updated the
DyvilKeywords
class. - Updated the
IContext.resolveConstructor(IMemberContext, IArguments)
method to take anIImplicitContext
as the first parameter. - Updated the
TupleExpr.isResolved()
andIfStatement.isResolved()
implementations.
Dyvil REPL v0.16.0
- Adapted the
CompleteCommand
class to lib interface changes. - Adapted to
Name
interface changes. - Adapted to compiler API changes.
- Added the
REPLParser
class to abstract REPL parsing internals. - Fixed all REPL Variables in the same input displaying the same value.
- Removed the
REPLMemberClass
class. - Removed the
repl$compute$
method for REPL variables. - Renamed the
REPLContext.reportErrors()
method toendEvaluation
. - The REPL now supports input of multiple expressions separated by
;
. #292 - The
:complete
command now displays available Implicit Conversions. - Updated REPL Input Compilation to support multiple expressions.
- Updated the REPL for
MethodMatchList
constructor changes. - Updated the
REPLMemberClass
class.
Dyvil Property Format v0.6.1
- Adapted the DPF implementations to API changes in the library and compiler.
This release changed 276 files with 5,503 additions and 5,235 deletions over 105 commits.