PackageTrack
Sign in Get early access

dart_eval

A flexible Dart bytecode compiler and interpreter written in Dart, enabling dynamic execution and code push for AOT Dart apps.

0.8.5 4.3K downloads/mo #4052 most downloaded on pub.dev ethanblake4/dart_eval

What this package is like to depend on

Last release 3 months ago

12 May 2026

Release timing varies

gaps range from 9 days to 8 months

Nearly every release is documented

notes for 43 of 44 stable releases

1 version withdrawn

withdrawn after publishing

5 years old

45 releases · first in 2021

4 releases in the last 12 months

see the full history below

Release timeline

45 releases · May 2021 to May 2026
2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 45
  1. 0.8.5 12 May 2026
    Release notes
    • Support for local function declarations (thanks @khoadng)
    • Support for using a Type as a value, eg var t = List<int> (thanks @khoadng)
    • Fix variables not being updated from within closures.
    • Fix inability to override == and != operators.
    • Fix switch-statement breaks inside a loop.
    • Fix code after a catch block being unreachable (thanks @khoadng)
    • Fix int assignment to setters with a double parameter (thanks @khoadng)
    • Fix List.sort() with default comparator (thanks @khoadng)
    • Add Exception class constructor binding (thanks @khoadng)
    • Improve type inference for numeric operation result types (thanks @khoadng)
    • Fix Symbol construction (thanks @wrbl606)
    • Permission objects are now directly comparable (thanks @wrbl606)
    • Fixed indexed-get set on a Map instance field (thanks @khoadng)
    • Fix is tests on Object-typed variables (thanks @khoadng)
    Open source →
  2. 0.8.4 25 Jan 2026
    Release notes
    • Update analyzer to v8.
    • Fixed try without catch.
    Open source →
  3. 0.8.3 03 Jan 2026
    Release notes
    • Support for Dart 3.10
    • Support for top level functions in the binding generator
    • Support for operator overloads in the binding generator
    • Fix return types of Uri constructors
    • Improve error messages
    Open source →
  4. 0.8.2 11 Sep 2025
    Release notes
    • Fix incorrect accessor index when creating bridge classes with the binding generator
    • Fix super parameters not being set when extending a bridge class
    Open source →
  5. 0.8.1 05 Aug 2025
    Release notes
    • Added support for configurable parser error handling
    • Fix accessing enum index values from an imported enum (thanks @jacksonrl)
    • Improve error handling when using await on a bridged future (thanks @MohamedAl-Kainai)
    • Support for enums in the binding generator
    • Fix serializing generic function types in BridgeTypeRef
    • Fix binding generator outputting incorrect import paths in eval_plugin.dart
    • Document how to create JSON bindings
    • Support for double.nan, double.infinity, and double.negativeInfinity
    Open source →
  6. 0.8.0 20 Jul 2025
    Release notes
    • (Breaking) Type parameters provided to BridgeTypeRef are now BridgeTypeAnnotation objects instead of BridgeTypeRef objects to allow for specifying nullability.
    • (Breaking) Overhauled filesystem permissions to use bespoke filesystem-based matching with symlink support instead of RegEx (thanks @MohamedAl-Kainai)
    • Support for switch statements (thanks @apps-auth)
    • Support for Sets
    • Support for record types
    • Support for patterns and switch pattern matching
    • Fix inability to compile super parameters without an explicit call to super()
    • Enable short-circuit evaluation for logical operators && and ||
    • Add basic support for calling functions on dynamic types. This is currently limited to functions without named arguments.
    • Update analyzer to v7 (thanks @normidar)
    • Binding generator is now stable and is the recommended way to create bindings for Dart classes. See the README for details.
    • Binding generator can now generate bridge bindings in addition to wrapper bindings.
    • Binding generator can now automatically create an EvalPlugin for your library, which can be used to register the bindings with the runtime.
    • Binding generator can now use JSON binding files to allow defining bindings that rely on an existing plugin.
    • Fix bug that could occasionally cause errors when modifying variables in an if branch
    • Fix bug when accessing null values from a Map
    • Fix tree-shaking of long reference chains within a single library
    • Support for extending a class referenced via an import prefix
    • Fix referencing a variable via an import prefix
    • Binding generator correctly handles type references with generic type parameters
    • Add bindings for ByteConversionSink and ChunkedConversionSink
    • Add bindings for num.abs(), Map.keys and Map.values (thanks @knatola)
    • Improve bindings for Encoding
    Open source →
  7. 0.7.11 23 Jun 2025
    Release notes
    • Support for list spreads (... operator) (thanks @apps-auth)
    • New implicitSupers option for the binding generator to automatically generate bindings for superclasses of classes that are bound
    • Support for redirecting constructors in the binding generator
    • Add bindings for Map.from() and num.toDouble() (thanks @apps-auth)
    Open source →
  8. 0.7.10 10 Nov 2024
    Release notes
    • Binding generator can now be configured with custom library paths
    • Binding generator can optimally wrap a field that has multiple possible types using the new @UnionOf annotation
    • Binding generator can automatically generate permission checks using the new @AssertPermission annotation
    • Support for automatically mapping the values of Futures and Streams in the binding generator
    • Fix bugs related to imports in the binding generator
    • Support for the dart:io Process class and its support classes
    • Added ProcessRunPermission and ProcessKillPermission to guard running and killing processes
    Open source →
  9. 0.7.9 17 Mar 2024
    Release notes
    • Expose base Object properties (eg toString, hashCode) for classes declared inside dart_eval
    • Type autowrappers can now be added to the runtime to expose any type for automatic wrapping using runtime.wrap().
    • Support for testing function equality
    • Deprecated runtime.wrapRecursive(). Use runtime.wrap(recursive: true) instead.
    • Optimized generated bytecode for string interpolation
    • Fixed $Future.$reified to unwrap its value
    • Fix error when accessing or setting nullable static class fields without an initializer
    • Support for factory constructors in the binding generator
    • Add $runtime Runtime getter to $Bridge mixin
    Open source →
  10. 0.7.8 02 Mar 2024
    Release notes
    • Support for runtime methods, static setters, type parameters, class inheritance, anonymous function types, and typedefs in the binding generator
    • Add bindings for MapEntry, List.firstWhere(), and HttpStatus (thanks @Noobware1)
    • Fix boxing error on default function parameters (thanks @Noobware1)
    Open source →
  11. 0.7.7 28 Feb 2024
    Release notes
    • Support for redirecting constructors
    • Fixed issue where tree-shaking would not always detect uses of symbols made visible by an export
    • Fixed dart:io File constructor
    • Better detection of main.dart files
    • Fixed empty function bodies causing scope leakage
    • Support for Map.remove()
    Open source →
  12. 0.7.6 26 Feb 2024
    Release notes
    • Support for 'break' inside loops
    • Support for constructor block bodies
    • Allow changing the value of static class fields
    • Fix various errors caused by tree-shaking bridge class data that is required to set up the runtime
    • Fix error when setting values on Maps
    Open source →
  13. 0.7.5 21 Feb 2024
    Release notes
    • Create writeback-capable List wrapper. Use $List.view() with a type mapper function to create a view of an underlying List that can be written to.
    • Support for $List.view in the binding generator
    • Binding generator can now generate configureForRuntime methods
    • Support for static methods and getters in the binding generator
    • Fix compile error with empty map literals
    • Automatically resolve bridged superclass field references without 'this.'
    • Fix broken implementation of Object.hashCode
    Open source →
  14. 0.7.4 02 Feb 2024
    Release notes
    • Fix return value boxing of equals and not equals operators
    • Fix assigning enums in conditional expressions
    • Fix error thrown by null assertion operator (thanks @Noobware1)
    • Add bindings for Error, UnimplementedError, UnsupportedError, and StackTrace (thanks @Noobware1)
    • Add bindings for InternetAddress and InternetAddressType (thanks @Noobware1)
    • Support for calling toString() on dynamic types (thanks @Noobware1)
    • Support for jsonEncode() and jsonDecode() (thanks @Noobware1)
    Open source →
  15. 0.7.3 24 Dec 2023
    Release notes
    • Fix error when setting a top-level variable
    • Fix for-each loops that specify the type of the loop variable
    • Allow exceptions to bubble up through an asynchronous gap
    • Fix CLI error resolving URIs from a Dart package_config.json file (thanks @think-of-xiao)
    • Support for List.of(), List.from(), and List.removeWhere() (thanks @Noobware1)
    Open source →
  16. 0.7.2 24 Nov 2023
    Release notes
    • Compiler now infers variable types when using the if (x is Y) pattern
    • Support for setters with a different type than getters / fields of the same name
    • Support for return statements without a value
    • Fix type resolution of super constructor parameters
    • Support for most Uri methods and constructors (thanks @Noobware1 and @kodjodevf)
    • Support for Base64Codec, Base64Decoder, Base64Encoder, utf8.decode(), and utf8.encode() (thanks @kodjodevf)
    • Support for Map.containsKey() (thanks @DeleMike)
    • Support for String.codeUnits (thanks @Noobware1)
    • Support for String.fromCharCodes (thanks @kodejodevf)
    • Support for ArgumentError, StateError, and StreamView
    Open source →
  17. 0.7.1 02 Nov 2023
    Release notes
    • Eliminate requirement to call setup() on the Runtime. Setup is now invoked automatically and the setup method is deprecated.
    • Add experimental wrapper binding generator to the CLI (thanks to @a-wallen). See README for details and caveats.
    • Add [] indexed getter for strings
    • Fix loop boxing/unboxing bugs
    • Fix argument type of String.replaceAll()
    • Fix error when trying to resolve a method on an enum
    • Fix incorrect type inference of conditional and assignment expressions
    • Make RegExpMatch bimodal
    Open source →
  18. 0.7.0 29 Oct 2023
    Release notes
    • (Breaking) Removed RuntimeTypes. All builtin types are referenced with CoreTypes/AsyncTypes etc now.
    • (Breaking) Improve extension method syntax and make it the default for examples
    • (Breaking) Added tree-shaking for dead code elimination. To ensure a file is compiled you must add it as an entrypoint to the Compiler. main.dart is always an entrypoint. See README for details.
    • Support for compiling Pub packages in the CLI
    • Support tryParse() and parse() for num and int
    • Support Iterable.generate() and List.generate() (thanks @wrbl606)
    • Support for ++i and --i prefix operators (thanks @wrbl606)
    • Fix increment and decrement operations on list elements (thanks @wrbl606)
    • Support for RegExpMatch and most RegExp methods (thanks @Noobware1)
    • Support for function type arguments and inferring generic return types based on argument types
    • Support for Comparable
    • Support invoking functions stored as fields in a class
    • Add identical and Object.hash functions
    • Basic support for runtimeType
    • Add Runtime.valueToString helper for converting a $Value to a string correctly
    • Support for default positional parameters
    • Use short-circuit evaluation for null coalescing operator ??
    • Support for null-shorted method calls and property access using ?.
    • Support null assertion operator !
    • Fix type resolution with self-referential generic types such as class T implements Comparable<T>
    • Support for rethrow
    • Support for symbol literals
    • Add bindings for Exception, RangeError, and FormatException
    • Add bindings for Symbol and Zone
    • Add bindings for ByteBuffer, TypedData, ByteData, and Uint8List from dart:typed_data
    • Add binding for LinkedHashMap from dart:collection
    • Improved performance by optimizing to static method calls and field accesses when the concrete type of a variable is known
    • Fix super constructor parameter type resolution
    • Fix various errors when using non-reserved language keywords as the name of a variable or function
    • Fix incorrect type hint for String.contains()
    • Fix top-level getters
    • Fix named constructor calls using "new" or "const"
    • Runtime errors now print out the scope stack for easier debugging
    • Reformat line length to 80 for standardization with Dart ecosystem
    • Documentation improvements
    Open source →
  19. 0.6.5 12 Oct 2023
    Release notes
    • Support for try/finally and try/catch/finally
    • Fix numerous bugs related to exception handling
    Open source →
  20. 0.6.4 10 Oct 2023
    Release notes
    • Support for casting (as)
    • Support for asserts and AssertionError
    • Add magic constant and version to EVC bytecode to prevent errors.
    • Fix for error when extending a bridge class
    Open source →
  21. 0.6.3 07 Oct 2023
    Release notes
    • Support for cascades
    • Support for null coalescing assignment operator ??=
    • Support for many List and Iterable methods (thanks @kodjodevf)
    • Fix error with do-while loops
    • Fix scope leak when using arrow functions
    • Fix properties not being properly boxed/unboxed when passed to a function
    • Fix constructor field initializer boxing
    • Improve test coverage
    • Add topics to pubspec
    Open source →
  22. 0.6.2 05 Oct 2023 withdrawn
    Release notes
    • Initial support for enums
    • Fix null coalescing expression
    • Support for bitwise int xor operator
    • Support for optional positional and unspecified named parameters in function expressions and tearoffs
    Open source →
  23. 0.6.2+1 05 Oct 2023
    Release notes
    • Hotfix to increase size of globals array in runtime
    Open source →
  24. 0.6.1 01 Oct 2023
    Release notes
    • Support for multiple catch clauses and on
    • $Map is now bimodal
    • Fix for error when accessing values on a map returned from json.decode()
    • Fix loops causing errors by attempting to repeatedly unbox variables declared outside the loop on each iteration
    • Support for bitwise int operators |, &, <<, and >>
    • Support for most DateTime functions, getters, and parse / tryParse constructors (thanks @oneplus1000)
    • Support for ! and != operators (thanks @oneplus1000)
    • Support for most Duration getters (thanks @oneplus1000)
    • Support automatic await of Future return values in async functions
    • Upgrade to analyzer v6
    • Support Dart 3
    Open source →
  25. 0.6.0 26 Mar 2023
    Release notes
    • (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
    Open source →
  26. 0.5.6 05 Feb 2023
    Release notes
    • (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
    Open source →
  27. 0.5.5 05 Feb 2023

    Nothing published for this version

  28. 0.5.4 23 Oct 2022
    Release notes
    • 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 new nullable 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
    Open source →
  29. 0.5.3 14 Oct 2022
    Release notes
    • Support for class getters and setters
    • Automatic default constructor when none is specified
    • Fix prefixed imports causing other types to be unresolvable
    Open source →
  30. 0.5.2 13 Oct 2022
    Release notes
    • Allow null to be boxed
    • Fix Maps without explicit type parameters
    • Other bug fixes
    Open source →
  31. 0.5.1 12 Oct 2022
    Release notes
    • 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
    Open source →
  32. 0.5.0 11 Oct 2022
    Release notes

    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
    Open source →
  33. 0.4.7 17 Sep 2022
    Release notes
    • 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
    Open source →
  34. 0.4.6 10 Sep 2022
    Release notes
    • Support for bridged static getters
    • Support for top-level and class arrow functions
    Open source →
  35. 0.4.5 07 Sep 2022
    Release notes
    • Support for arrow function expressions
    Open source →
  36. 0.4.4 07 Sep 2022
    Release notes
    • CLI: allow invoking without dart pub global run
    Open source →
  37. 0.4.3 07 Sep 2022
    Release notes
    • 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)
    Open source →
  38. 0.4.2 25 Aug 2022
    Release notes
    • Fix analyzer version constraint
    Open source →
  39. 0.4.1 21 Aug 2022
    Release notes
    • 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
    Open source →
  40. 0.4.0 20 Aug 2022
    Release notes
    • (Breaking) You must now specify the bridge or wrap parameter in a BridgeClassDef
    • (Breaking) You must now specify isBridge: true when registering a bridge class constructor with runtime.registerBridgeFunc()
    • Support for bridged (only) enums
    • Support for variable captures inside closures
    • Support for implicit class field accesses including this and super 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
    Open source →
  41. 0.3.0 30 Apr 2022
    Release notes
    • (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. Use Runtime.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 and hide on imports and exports
    • Support defining extends, implements, and with 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
    Open source →
  42. 0.2.0 24 Apr 2022
    Release notes
    • 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 as Future.then()
    • Basic CLI
    Open source →
  43. 0.0.4 11 May 2021
    Release notes
    • Add support for if, basic for, number comparison operators, and postfix ++
    • Fix +, -, *, and / operators
    • Improve performance significantly
    Open source →
  44. 0.0.3 09 May 2021
    Release notes
    • Make the Pub analyzer happy
    • Add some Dartdoc comments
    Open source →
  45. 0.0.2 09 May 2021
    Release notes
    • Fix scoping
    • Add support for List and Map types
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive