home.social

૮༼⚆︿⚆༽つ / Wildan

  1. devlog

    I mostly complain that all system programming languages locked to C callconv & ABI which make it hard for me to target wasm32-web.

    Now here another deep dive why C ABI cause problems:
    - faultlore.com/blah/rust-layout
    - mcyoung.xyz/2024/04/17/calling

  2. devlog

    alright, so `__attribute__((address_space(N))` has something todo with wasm multi-memory 🤔

    openasip.org/user_manual/TCE/n

  3. devlog

    I wonder if there's `rustc` flag to bypass proper ABI adjustment 🤔

    I want to target wasm32 but the C ABI Convention get in the way.


    github.com/rust-lang/rust/issu

  4. I'm currently learning codemodel (.cm), d_process, QOM and virtio. Wish mew luck 🤠

    Special thanks to isotel for opening my eyes from this article. Now I'm tempted to truly go back to my root. (Yes, I'm actually electrical engineer cosplaying as webdev)
    isotel.eu/mixedsim/embedded/mo

  5. I think I found a language that is suitable to write the wasm runtime for
    github.com/titzer/virgil

    I'm hoping that language support multi-values return and multi-memory since wizard-engine also written in Virgil 🤔
    github.com/titzer/wizard-engine

  6. devlog

    Let's dump my build graph in case I need to revisit again to build my own Rust crate for inline wasm text

    github.com/DrSensor/nusa/wiki/

  7. Don't expect easy-to-fix bug in JS/TS while aiming to have smallest bundle size. It just too hard!

    The worst part is closure compiler can't catch up with latest ES spec 😮‍💨

    I place my hope on but it doesn't emit sourcemap and there's no sign they're working on it 😱

  8. devlog

    I think I can use this 😏
    doc.rust-lang.org/core/hint/fn

    (ugh, I think I should learn how to build my own allocator)

    Courtesy
    github.com/Speykious/cve-rs

  9. Have been playing around with

    Thinking it as document synchronization (i.e alpine-ajax) make it easier to maintain than html swapping (i.e htmx). And, I ended up having less endpoints. It's kinda inconvenience because it based on html `id` and it needs to be unique. But that's why it's predictable.

    Tips: some framework has useId(key) to generate html `id`. If not then you can do
    ```go
    const myID = "ident-" + uuidv4() // global
    ```

  10. Now I'm considering replacing with 🤔
    (still using as my data-wrangling shell)


    murex.rocks

  11. I wonder how `[@mel.uncurry]` compare with uncurry mode 🤔

  12. Quiz
    Given that you only have the range of line and char position of a file changes, how do you modify/update that file without reading it?

  13. I like the idea of JSX but in . A solid choice if you want both template engine and plugin system while keeping the binary small. I wish someday adopt this.
    bvisness.me/luax/

  14. journey
    So I need to create empty folder `node_modules/rescript/`to make `rescript-editor-analysis.exe` to works 😥


  15. TIL why `esm.run/[pkg]/` redirect to `cdn.jsdelivr.net/npm/[pkg]/+esm`

    `/+esm` suffix avoid breaking lazy fetch an asset, especially when using wasm module.
    example
    ```javascript
    const their = await WebAssembly.instantiateStreaming(
    fetch(new URL("their.wasm", import.meta.url)))
    ```
    without `/+esm` suffix, it will point out to `cdn.jsdelivr.net/npm/their.wasm` which is not exist instead of `cdn.jsdelivr.net/npm/[pkg]/their.wasm`

  16. devlog

    dun..dun-dun
    Intent to Ship: WebAssembly Multi-Memory
    groups.google.com/a/chromium.o

    Oh yeah, multi-memory is coming!! It really scratch my head implementing Apache Arrow that share memory across instances and boundaries (i.e worker, shader, main-thread).

    But wait, I need a Rust crate/macro for wasm inlining (similar to `asm!()` or at least a `#[proc_macro] extern {}`). Using llvm-mc to write wasm specific stuff and link them with rust `output.{so,wasm}` really give me a headache.

  17. So you are familiar with migration script for database schema but have you seen a migration script to renew your code with latest libs major version?

    For you who stuck in legacy React/PHP, imagine if you have this kind of script 🤭

    github.com/rescript-associatio


  18. Building webapp without hot reload is quite something. And I only use basic https server. It also target web api that only works on mobile Android.

    My weapons:
    - Cloudflare Pages
    - alpine-ajax (not htmx) & alpinejs
    - eruda (devtool) so I can inspect it on mobile phone
    - qrencode (cli)
    - httplz (https server)

    The good side is I don't need to worry about updating the codebase to fit with the latest toolchains in case I revisit it after long inactivity.

  19. devlog

    Pomsky now have unit test (yay).
    pomsky-lang.org/blog/pomsky-0.
    I've been using code comments to annotate the success&fails criteria.
    Oh by the way "unit test" is a pun for "you need test"

  20. devlog
    github.com/llvm/llvm-project/i

    I guess I can finally enable debuginfo in wasm-opt after I compile my [component].wasm with rustc with debuginfo & DWARF enabled.

  21. devlog

    Now I'm tempted to replace because separating type annotation into .d.ts didn't works on `class`and `abstract class`. Even `/ @abs​tract */ class`didn't exist.

    Thinking to replace it with because it has sane comment-based type annotation. But hold on, does it support Ruby style for type annotation?
    (I mean separation between file.js as implementation and file.d.ts as type annotation)

  22. devlog

    Just finish replacing JSDoc with *.d.ts (inspired from Ruby ) so I can debug it easily without too much distraction.

    Somehow using either or make it difficult to reason when fixing many regression I encounter 😵‍💫

  23. devlog

    LoL, I'm not sure why nix rebuild `pkgs.rome` instead of fetching it from cache.nixos.org 🤔

  24. devlog
    Migrating my build system to xmake.lua

    I love this era of AI. Figuring out how to do this based on the official docs is impossible for me.

    phind.com/search?cache=ihtsqit

  25. devlog

    DOM Parts proposal is amazing!
    chromestatus.com/feature/51997

    I'm not sure about the Declarative API but I can definitely take advantage of the Imperative API.
    github.com/WICG/webcomponents/

  26. [side note for devlog]

    Now I just need something that can swap the runtime of `nodePackages.rollup` (nodejs) with deno.

  27. I've been using for a while and it's pretty good.
    zyedidia.github.io/blog/posts/

    But now I get annoyed with Lua `require()` which doesn't allow arbitrary path. I think replacing Lua with script should solve the problem. Unlike gopher-lua, rhai provide a way to customize the syntax. However, the whole project (:knit) need to be rewritten in Rust 😅

  28. devlog
    rant

    Somehow I decide to use rather than to implement Apache Arrow data type because Rust support multivalue return. However it can only return up to 2 value. And unlike Zig, Rust wasm can't emit nor import mutable-globals 😞. The `static mut` variables are stored in wasm linear memory instead of being `global mut`.

    If my guess is correct, `static mut` should be wrapped in `thread_local` macro to produce mutable-globals. But… it's not yet supported 🥲

  29. banana milkshake + cereal is very fulfilling and pretty good for 🍴

  30. On-site project (i.e IoT, robotics, webapp, …) require mutable system. It mean your logic and user interface can be modified at anytime after being deployed, maybe via ssh/sftp/uart.

    Off-site project (i.e apps/games, services, website, …) require immutable system. It mean each deployment produce immutable artifacts. To harden security and protect your costumers, no one can modify it. The only way to update the system is by redeploy.
    system = build(change) |> deploy(target)

  31. Current status: trying ( runtime) because it has HTMLRewriter 😂
    bun.sh/docs/api/html-rewriter

    Unfortunately they don't have *musl* build so it's quite a hassle to get it work on and 🙁

  32. I wish other and support `/*@__INLINE__*/` annotation. Not just specific to terser.