nandi/frqpublic Fork 0
main
Commits
Clone
git clone https://git.rickub.com/nandi/frq.git
git clone ssh://git@rickub.com/nandi/frq.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

The last of the Clojure 284b59c · on main · nandi · 36m ago
README.md · 27 lines · 1.2 KBmarkdown
Blame HistoryOpen raw

The Dart side

Packages that are Dart rather than ClojureDart, and are not Flutter.

Why this is a separate tree

frq_core is the binding to the Nim core in nim/. It is dart:ffi and
dart:convert and nothing else, and keeping it out of flutter/ buys two
things:

  • It tests on the plain Dart VM. flutter/pubspec.yaml depends on the
    Flutter SDK, so dart pub get cannot resolve it at all — anything living
    there needs a Flutter toolchain to run one assertion about a string. This
    package resolves and tests in a second. just test dart.
  • It says which way the dependency goes. The Flutter app depends on this
    by path. Nothing here may depend on Flutter, and if that ever becomes
    tempting the thing being written belongs on the other side of the line.

Why Dart

The binding was ClojureDart for exactly one commit, which is how it got its
own README section. Writing it in the language being removed meant fighting
generic interop — lookupFunction takes two type arguments — for a file that
is pure marshalling. In Dart it is a typedef.

The ClojureDart is all gone now, and the shape it left is the one to keep:
Nim owns the rules, Dart owns the platform.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# The Dart side

Packages that are Dart rather than ClojureDart, and are not Flutter.

## Why this is a separate tree

`frq_core` is the binding to the Nim core in `nim/`. It is `dart:ffi` and
`dart:convert` and nothing else, and keeping it out of `flutter/` buys two
things:

* **It tests on the plain Dart VM.** `flutter/pubspec.yaml` depends on the
  Flutter SDK, so `dart pub get` cannot resolve it at all — anything living
  there needs a Flutter toolchain to run one assertion about a string. This
  package resolves and tests in a second. `just test dart`.
* **It says which way the dependency goes.** The Flutter app depends on this
  by path. Nothing here may depend on Flutter, and if that ever becomes
  tempting the thing being written belongs on the other side of the line.

## Why Dart

The binding was ClojureDart for exactly one commit, which is how it got its
own README section. Writing it in the language being removed meant fighting
generic interop — `lookupFunction` takes two type arguments — for a file that
is pure marshalling. In Dart it is a typedef.

The ClojureDart is all gone now, and the shape it left is the one to keep:
Nim owns the rules, Dart owns the platform.