Tart Logo

๐Ÿ‹ Tart

Tiny Dart, Big Impact! ๐Ÿš€ Note: Tart is currently in the early stages of development and is not yet ready for production use.

Pub Version License: MIT codecov

๐ŸŒŸ Features

  • ๐ŸŽฏ Lightweight Dart parser with Flutter widget support
  • ๐Ÿงฉ Modular and extensible design with asynchronous parsing
  • ๐Ÿšฆ Comprehensive token handling and caching
  • ๐ŸŒณ Abstract Syntax Tree (AST) generation for Dart and Flutter widgets
  • ๐Ÿš€ Asynchronous lexing and parsing for improved performance
  • ๐Ÿงช Thoroughly tested with benchmarking capabilities
  • ๐Ÿ”„ Dynamic code execution in Flutter applications
  • ๐Ÿ–ผ๏ธ Flutter widget creation from Tart code
  • ๐Ÿ” Detailed error reporting and synchronization

๐Ÿš€ Getting Started

Add tart_dev to your pubspec.yaml:

dependencies:
    tart_dev: ^0.0.3

then run:

dart pub get

๐Ÿ“š Usage

Here's a quick example of how to use Tart:

import 'package:tart_dev/tart.dart';

void main() {
  final tart = Tart();
  final source = 'var x = 42; print(x);';
  
  final (result, _) = tart.run(source);
  print('Result: $result');

  // With benchmarking
  final (result, benchmarks) = tart.run(source, benchmark: true);
  print('Benchmark Result: $result');
  print('Lexer time: ${benchmarks?.lexerTime}s');
  print('Parser time: ${benchmarks?.parserTime}s');
  print('Evaluator time: ${benchmarks?.evaluatorTime}s');

  return runApp(result)
}

For more examples, check out the /example folder in our GitHub repository.

๐Ÿ› ๏ธ API Reference

Tart provides the following main classes:

  • Lexer: Tokenizes the input source code
  • Parser: Generates an AST from tokens
  • Token: Represents individual lexical units
  • AST: Various AST node classes for different language constructs
  • Evaluator: Executes the parsed AST
  • Tart: Main class for running Tart code
  • TartProvider: Flutter widget for providing Tart instance
  • TartStatefulWidget: Flutter widget for rendering Tart code

For detailed API documentation, visit our API reference page.

Why Tart?

Tart offers several advantages for Flutter development:

  • Flutter-focused: Optimized specifically for Flutter applications
  • Familiar syntax: Nearly identical to Dart, minimizing learning curve
  • Performance: Designed for efficiency in Flutter-specific use cases
  • Developer experience: Intuitive API and enhanced tooling support
  • Faster development: Enables quicker iterations on dynamic code
  • Improved debugging: Detailed, Flutter-specific error messages
  • Smaller footprint: Minimal impact on overall app size
  • Focused feature set: Polished core functionalities for common Flutter scenarios

Tart provides a specialized, Flutter-centric solution for dynamic code execution, offering improved performance and an enhanced developer experience.

๐Ÿค Contributing

We welcome contributions! Please see our contributing guide for more details.

๐Ÿ“„ License

Tart is released under the MIT License. See the LICENSE file for details.

๐Ÿ’– Support

If you find Tart helpful, consider giving it a star on GitHub and sharing it with others!


Made with ๐Ÿ‹ by the Tart Dev team