Skip to content

Dyvil v0.23.0

Compare
Choose a tag to compare
@Clashsoft Clashsoft released this 24 Jul 12:47
· 1909 commits to master since this release
  • 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 and super 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 and null 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 Primitive Range classes.
  • Added Range Operator Functions for Primitives and Rangeables.
  • Added pow implementations for integer and BigDecimal exponentiation in the dyvil.math.PowImpl class.
  • Added the ** operator for BigIntegers and BigDecimals.
  • Added the BigDecimalOperators class to allow math operators to be used with BigDecimals.
  • Added the BigIntegerOperators class to allow math operators to be used with BigIntegers.
  • 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 Primitive Range classes.
  • Fixed the return types of the Collection.union(Collection), .difference(Collection), .intersection(Collection) and Set.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 the tryParse method.
  • Moved the utility methods for qualifier <->︎ unqualified Name conversions from the BaseSymbols class to the Qualifier class.
  • Overloaded the return type of Primitive Range toArray() methods.
  • Removed deprecated TryParserManager.parse(…) methods.
  • Renamed the IParserManager.jump(IToken) and the TokenIterator.jump(IToken) methods to setNext.
  • 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 the TryParserManager 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 and null 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 the Comparable 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 for IType 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 and TryStatement classes use IStatement.checkStatement(…) method.
  • Made the IMemberContext interface extend IImplicitContext.
  • Made the LiteralConversion class extend AbstractCall instead of MethodCall.
  • Made the MatchList<T> class Iterable<Candidate<T>>.
  • Merged the MethodMatchList and the ConstructorMatchList classes.
  • Method Resolution now takes all available implicit conversions for the receiver into account.
  • Moved the CompoundCall methods to the InfixCall 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 where receiver was meant.
  • Renamed the ExpressionParser.addFlag(int) and .removeFlag(int) methods to addFlags and removeFlags.
  • Renamed the ExpressionParser.withFlag(int) and MemberParser.withFlag(int) methods to withFlags.
  • Simplified the LiteralConversion class by making it extend MethodCall.
  • Simplified the NilExpr implementation by making it extend LiteralConversion.
  • Static Methods can now be accessed from non-static expressions.
  • The ClassBody, ClassMetadata and CaseClassMetadata classes now use the IContext.getConstructorMatch(…) method.
  • The IConstructor.getSignatureMatch method now takes an IImplicitContext parameter.
  • The IMethod.getSignatureMatch method now takes an IImplicitContext parameter.
  • The IParserManager.report(IToken, String) method now takes an ICodePosition instead of an IToken.
  • The MethodMatchList and ConstructorMatchList classes now store an IImplicitContext.
  • 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 and internalName are now computed lazily for the CodeClass class.
  • The implicit Modifier can now be used on Methods.
  • The prefix keyword now works as an alias for static. #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 RangeOperators anymore.
  • Updated and fixed Wildcard Type checking.
  • Updated the AbstractMethod.getSignature() method by moving the needsSignature() method and calls to the CodeMethod class.
  • Updated the DyvilKeywords class.
  • Updated the IContext.resolveConstructor(IMemberContext, IArguments) method to take an IImplicitContext as the first parameter.
  • Updated the TupleExpr.isResolved() and IfStatement.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 to endEvaluation.
  • 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.