7
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
this post was submitted on 30 Jan 2024
7 points (100.0% liked)
Programming Languages
1160 readers
2 users here now
Hello!
This is the current Lemmy equivalent of https://www.reddit.com/r/ProgrammingLanguages/.
The content and rules are the same here as they are over there. Taken directly from the /r/ProgrammingLanguages overview:
This community is dedicated to the theory, design and implementation of programming languages.
Be nice to each other. Flame wars and rants are not welcomed. Please also put some effort into your post.
This isn't the right place to ask questions such as "What language should I use for X", "what language should I learn", and "what's your favorite language". Such questions should be posted in /c/learn_programming or /c/programming.
This is the right place for posts like the following:
- "Check out this new language I've been working on!"
- "Here's a blog post on how I implemented static type checking into this compiler"
- "I want to write a compiler, where do I start?"
- "How does the Java compiler work? How does it handle forward declarations/imports/targeting multiple platforms/?"
- "How should I test my compiler? How are other compilers and interpreters like gcc, Java, and python tested?"
- "What are the pros/cons of ?"
- "Compare and contrast vs. "
- "Confused about the semantics of this language"
- "Proceedings from PLDI / OOPSLA / ICFP / "
See /r/ProgrammingLanguages for specific examples
Related online communities
- ProgLangDesign.net
- /r/ProgrammingLanguages Discord
- Lamdda the Ultimate
- Language Design Stack Exchange
founded 1 year ago
MODERATORS
I think that's actually a pretty good idea.
I could, right now, create the function in wasm, put it in yaml with a
!wasm
tag (or maybe a more specific tag) then the deserializer could detect it, load it, and wrap it in a function.Check out the ABI concept, if you haven't found it yet:
https://www.webassembly.guide/webassembly-guide/webassembly/wasm-abis
I would actually intentionally not want any ABI like wasi or emscriptem. I'd like the serialization format to not care about the platform at all (e.g. the function should run the same on any operating system, browser, embedded device, etc).
Wouldn't this serialization format need to be implemented in every language that that needed interoperation? How does that differ from an ABI?
https://medium.com/wasmer/webassembly-cloudabi-b573047fd0a9
I think maybe this is just a communication issue and we actually agree on the details.
Wasi and emscriptem from the ABI link, AFAIK, are basically wrappers to impure tools; console log, file system access, sockets, etc. For my usecase, I dont want the serialized functions to have access to those interfaces.
That aside, lets say we serilized
(m: f32, x: f32, b:f32): f32 => m*x + b
. Yes, there will need to be some conversion layer, like converting python floats into wasm f32 floats and converting the f32 output back to python float. And stuff like javascript not having ints, could cause some weirdness. Maybe thats the ABI you're talking about. Since that conversion basically already exists for every language that supports wasm, I didnt really think of it as an ABI, but you might be right that techically it is an ABI.I suppose a real ABI would be needed if the wasm function wanted to manipulate complex types like hashmaps or arrays.
The serialization format could just be the bytes of a wasm file stored inside of a yaml file in base64. I'm not sure if yaml or utf8 would be considered a ABI. But basically the bytes would be loaded as a wasm module, then the wasm function inside the module would become value for that yaml key. The wasm function would be auto-wrapped by the language's default inter-op layer for wasm functions.