nandi/frqpublic Fork 0
3975b4bc9fe9fd59fc0e81ca2bb7ffdba986934a
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.

Six verbs, and the last of the nix 2e24e64 · on 3975b4bc9fe9fd59fc0e81ca2bb7ffdba986934a · nandi · 14h 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 and not ClojureDart

The Nim core exists to have less Clojure in the tree. Writing its binding in
ClojureDart would have added some — and would have meant fighting generic
interop for a file that is pure marshalling, since lookupFunction takes two
type arguments. In Dart it is a typedef.

So the shape the migration moves toward: Nim owns the rules, Dart owns the
platform, and ClojureDart shrinks from both ends.

 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 and not ClojureDart

The Nim core exists to have less Clojure in the tree. Writing its binding in
ClojureDart would have added some — and would have meant fighting generic
interop for a file that is pure marshalling, since `lookupFunction` takes two
type arguments. In Dart it is a typedef.

So the shape the migration moves toward: Nim owns the rules, Dart owns the
platform, and ClojureDart shrinks from both ends.