• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

KarpelesLab / libwallet / 24874204074
25%

Build:
DEFAULT BRANCH: master
Ran 24 Apr 2026 05:50AM UTC
Jobs 1
Files 108
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Apr 2026 05:40AM UTC coverage: 19.52%. Remained the same
24874204074

push

github

MagicalTux
ios: ObjC bridge replacing dlsym-on-app-binary linker hacks

Final iOS dlsym story, replacing the cumulative pile of escape
hatches: -force_load (kept), -exported_symbol (broke debug
launcher), -u (worked on debug, dubious on release with the new
linker). All of those tried to keep the Go-exported `Libwallet*`
symbols in the host binary's export trie despite nothing in app
source statically referencing them.

Real fix: give the linker an honest static reference. Add a tiny
Objective-C bridge file (dart/ios/Classes/LibwalletBridge.m)
compiled INTO the libwallet pod target, with one wrapper per FFI
entry point that just forwards to the underlying Go-exported
symbol. The bridge functions wear `__attribute__((used))` so
they survive their own dead-strip pass; default visibility puts
them and (transitively) the Go symbols in the host binary's
export trie under standard linker rules. No more fighting the
new linker's behavior — the symbols are reachable because they
are, demonstrably, used.

Also fixes the conceptual hack the pod's been building on since
the start: dart:ffi looking up symbols that were dropped into the
main app binary via -force_load is the standard "FFI shim into
statically-linked C library" pattern that production Flutter
plugins (sqflite, ffmpeg_kit_flutter, etc.) all use. We now match
that pattern.

Dart side: ffi_transport.dart looks up the new snake_case bridge
names (libwallet_init / libwallet_request / libwallet_set_event_
callback / libwallet_show_debug / libwallet_destroy /
libwallet_free) on iOS and the Go-exported CamelCase names
elsewhere. macOS / Linux / Windows / Android are unaffected.

Podspec changes:
  - source_files = 'Classes/**/*.{m,h}' compiles the bridge.
  - requires_arc = true for the ObjC code.
  - dropped the -u ldflags (no longer needed; replaced by the
    static reference from the bridge).
  - kept -force_load (still needed for Go runtime init code that
    has no static refs from the 6 entry points).

Co-Auth... (continued)

2741 of 14042 relevant lines covered (19.52%)

57.44 hits per line

Jobs
ID Job ID Ran Files Coverage
1 24874204074.1 24 Apr 2026 05:50AM UTC 108
19.52
GitHub Action Run
Source Files on build 24874204074
  • Tree
  • List 108
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #24874204074
  • 9605f051 on github
  • Prev Build on master (#24855034415)
  • Next Build on master (#24875986296)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc