- (Deprecated)
BridgeTypeRef.spec
, use the default constructor instead - (Breaking) The $runtimeType getter on $Value has been replaced with a $getRuntimeType method that accepts a Runtime argument.
- (Breaking) Many bridge types now use CoreTypes/AsyncTypes etc instead of RuntimeTypes. This allows specifying generic type arguments.
- (Breaking) EvalPlugin now uses the supertype
BridgeDeclarationRegistry
instead of Compiler in configureForCompile(). - (Breaking) Removed the typeMapper parameter from $Future. It was mostly useless and didn't support async/await. Use bimodal wrappers instead.
- Support for relative imports and exports
- Support for Streams and StreamController
- Support for dart:io filesystem and HTTP classes
- Basic support for try/catch and throw. Only 1 untyped catch clause is supported for now, and finally is unsupported.
- Support for ternary expressions
- Support for
is
type-test expressions - Basic support for RegExp
- Add a runtime permissions system to control access to dart:io. See the README for details.
- @RuntimeOverride annotations are now parsed at compile-time to create dynamic runtime overrides consumed by the runtime. See README for details.
- Support for Utf8Codec and JsonCodec
- Add BridgeSerializer, a class that can serialize bridge classes to JSON for use in the dart_eval CLI.
- Add an optional extensions syntax to make writing bridge classes
easier (thanks @canewsin). See
examples/dart_eval_extensions_syntax.dart
. - Add $Closure for an easier way to pass external functions as arguments
- Support modulo operator on numbers
- Add dart:math functions and constants
- Support for prefixed imports of top-level functions and constructors
- Very basic support for generic function types that simply resolves
them to
Function
- Improved code documentation (thanks @maxiee)
- Fix type inference using
await
- Added type inference for class fields
- Fix method resolution on top-level variables
- Fixed an bug where compilation could fail due to a null function offset (thanks @maxiee)
- Fixed a type inference error where bridged functions could resolve incorrectly to a unboxed return type
- Fixed empty list literals causing the compiler to stall
- Fixed bugs when accessing list elements from class methods and/or closures
- Add a feature support table to the README
- (Breaking) Use DartTypes.list instead of RuntimeTypes.listType in bridge class definitions.
- Support for Iterable and for-each
- Support for collection
for
- Fixes to branching logic
- Improved generic type inference
- Fix return value boxing in arrow functions
- Allow arrow function entrypoints in
eval()
- Remove dcli to eliminate many extraneous dependencies
- Improved documentation
- Bindings for most String methods (thanks to @maks)
- Support for super constructor params
- Support for plugins in the
eval()
method - Deprecated compilerSettings and runtimeSettings in
eval()
in favor of plugins - Support for nullable type annotations in argument lists
- Removed the
nullable
param from KnownMethodArg in favor of the newnullable
param in TypeRef - Improved many error messages to display filename and a code snippet
- Error messages about type assignments now disambuigate between types if they have the same name
- Support for class getters and setters
- Automatic default constructor when none is specified
- Fix prefixed imports causing other types to be unresolvable
- Allow null to be boxed
- Fix Maps without explicit type parameters
- Other bug fixes
- Propagate expected types from variable declarations and argument lists to the expressions they contain.
- Allow specifying doubles with int literals when the expected type is known
- Fix static bridge method return types being null
Note: EVC bytecode generated with this version may not be compatible with previous versions.
- Web support for both compiler and runtime
- Incremental parsing for faster recompilation
- New plugin system for bridge libraries to enable reusing a Compiler instance
- Support for tear-offs (top-level functions and methods within the current class only)
- Improve async/await
- Reduce size of generated bytecode
- Add bindings for the dart:math Point class
- Add Duration.zero and some other Duration static getters
- Support unary minus on ints and doubles
- Support for optional positional parameters on bridge classes
- Support for bridged static getters
- Support for top-level and class arrow functions
- Support for arrow function expressions
- CLI: allow invoking without
dart pub global run
- CLI: Improved ease of use and documentation
- CLI: Added support for JSON bindings
- Type arguments are now applied when extending a bridge class that declares a generic type parameter
BridgeTypeRef.ref
is now supported in limited cases for referencing generic class type parameters- Support for bridged getters
- Support for string interpolation
- The
eval()
method now lets you specify an output file path and does not automatically output a file if left unspecified - Fix broken sample in README (thanks @g123k)
- Fix analyzer version constraint
- Fix a potential crash when resolving common base types.
- Support for calling methods on a bridge class's supertype without having to declare the method on the subtype's declaration.
- Documentation improvements
- (Breaking) You must now specify the
bridge
orwrap
parameter in aBridgeClassDef
- (Breaking) You must now specify
isBridge: true
when registering a bridge class constructor withruntime.registerBridgeFunc()
- Support for bridged (only) enums
- Support for variable captures inside closures
- Support for implicit class field accesses including
this
andsuper
in closures - Bridge declarations are now merged with a Dart source file of the same URI, if one exists
- Basic support for top-level variables and static fields
- Support for bool literals and logical and/or
- Support
String.substring()
(thanks to @maks) - Now using continuous integration (thanks to @maks)
- Various bug fixes and code cleanups
- (Breaking) Modified public API for defining bridge classes. See Pub example.
- (Breaking) Relative import URIs may no longer work (it's unclear whether they worked before). Support will be re-added in a future release.
- (Deprecated)
Runtime.executeNamed()
is deprecated. UseRuntime.executeLib()
instead. - Compiler now uses graphs to compose libraries from imports, exports, and parts, and should now mostly follow the Dart spec.
- Partial support for
show
andhide
on imports and exports - Support defining
extends
,implements
, andwith
on bridge classes - Support for adding files to the compiler before compiling, for use in bridge libraries to enable exports.
- Add recursion guard for type resolution
- Partial support for anonymous functions and the Dart runtime type system
- New serializable interop descriptor classes to allow for code push in the future
- Runtime overrides
- Implement collection
if
for Lists - Support for
async
/await
via continuations, as well asFuture.then()
- Basic CLI
- Rebuilt from the ground up around the new DBC bytecode compiler
- Public API changes: see readme
- Massive performance improvements, up to 350x
- Support for the Dart type system (compile-time checks only)
- Refactor class system to support
super
- New simpler Bridge interop that also allows const classes
- Add support for
if
, basicfor
, number comparison operators, and postfix++
- Fix
+
,-
,*
, and/
operators - Improve performance significantly
- Make the Pub analyzer happy
- Add some Dartdoc comments
- Fix scoping
- Add support for List and Map types
- Create parser and interpreter
- Add interop