Replies: 4 comments 2 replies
-
Beta Was this translation helpful? Give feedback.
-
As we're making progress with lingo, we should revisit this discussion and see where we stand... Good topic for next week's meeting? |
Beta Was this translation helpful? Give feedback.
-
Update: see lf-lang/lingo#50. I hope that that PR, which is small and uncomplicated, will relieve the pressure to settle on a complete, long-term solution. I think that the PR indicates that for our near-term problems, WASM is likely to suffice as a quick workaround that will not accrue a lot of tech debt. I also think that WASM is a high-quality solution that might even be the best long-term solution. However, a long-term solution is not necessarily what we currently need, and given how little work I think it will be to address this with WASM, I don't think that we need to agree on WASM as a long-term solution as a prerequisite for using WASM in the near term. Besides the small scale of the proposed changes, the other reason why I do not think this solution will accrue a lot of tech debt is that I am under the impression that librarifying and giving callers control over side-effectful code (like file system access and running subprocesses) are good, modular design practices anyway, regardless of any WASM compatibility constraint. In particular, requiring a procedure to take a file system accessor as an argument makes it explicit in the signature of a function what side-effectful capabilities it has. This is kind of analogous to capability-based security in the sense that as the caller, you can know for sure, no matter how lingo was written, that if one of its procedures works in your WASM module and it doesn't require a certain capability as an argument, then it can't sneakily do some wild thing in the file system that you don't know about. Parameterizing code by file system access capabilities also can enable things like virtual file systems, tracing or restricting which directories the code accesses, and easily switching between making code work locally and making it operate on the file system of a docker container or a remote system in the cloud (kind of like what we did recently for the Monte Carlo Pi demo). |
Beta Was this translation helpful? Give feedback.
-
This is very interesting idea, @petervdonovan. So rather than build some three-way communication between language server, extension, and |
Beta Was this translation helpful? Give feedback.
-
We are currently in the process of designing the new LF package manager lingo. One of the biggest design questions, is how our language and diagram server will interact with lingo. I hope this discussion will serve as a place to exchange and discuss some concepts. I'll add my thoughts on some aspects in a separate post below.
Beta Was this translation helpful? Give feedback.
All reactions