Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Inspired by Finicky: wanted to share and say thanks #523

expelledboy started this conversation in General
Discussion options

Hi John,

I've used Finicky daily for years. Wanted to let you know I built a lighter sketch with the same philosophy, and to thank you for years of frictionless link routing.

The motivation was just wanting something leaner on the hot path and in memory. Finch resolves a URL in ~5μs and sits at ~17MB resident. The design is straight from Finicky: graduated match types (string, regex, or function), the opener context, the rewrite-vs-handlers split. Those are your ideas. I just rebuilt the runtime around them.

https://github.com/expelledboy/finch

Two things might be worth a look if you ever want to copy anything:

  1. Marker-object helpers. domain(), from(), strip() return plain data like {__type: "domain", hosts: [...]} instead of functions. The host walks the config tree at load time and compiles markers to native NSRegularExpression and Set lookups. The hot path stays in Swift, and JS only runs for user-written (url, ctx) => ... predicates.

  2. Native JavaScriptCore instead of goja. macOS ships JSC, which evaluates ES2020+ directly, so no Babel, no esbuild, no bundler. Fewer moving parts at the cost of portability.

Take whatever's useful. Feel free to share with anyone who'd find it interesting, that's part of why I'm posting here.

Thanks again.

Anthony

You must be logged in to vote

Replies: 1 comment 3 replies

Comment options

Congratulations on the release!

  1. I feel Finicky is fast enough, so I haven't put much effort into improving performance. I also haven't recieved feedback here, so I hope that means it works well for the users.
  2. Finicky 3 and below actually used JavaScriptCore, but for the rewrite in version 4 I used a more complete setup to support modern syntax that JavaScriptCore doesn't, including Typescript support.
You must be logged in to vote
3 replies
Comment options

The issue is that I open about a link every 3 minutes 😄 Not sure exactly what the issue was, but sometimes finicky would hang for up to a second. Its not a big issue, but enough for me to reduce the features down to just what I needed and max-out performance from a click to the browser opening.

Comment options

I see the same issue - some links have a distinct pause before opening, but I haven't looked into it in depth.

Comment options

Interesting. If you encounter it please let me know (and share the debug log output). Tested a little bit yesterday and I see durations around 80-100 ms per url.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet

AltStyle によって変換されたページ (->オリジナル) /