Update Coding environment

Glen Whitney 2024-07-23 22:29:31 +00:00
parent 73a96bc2fd
commit a1ffc72533

@ -38,6 +38,7 @@ Next let's try to collect various language options, with their pros and cons:
- ⇓ The user community is very small, and even the most basic tools and libraries seem sporadically maintained. *(Aaron)*
- The best-maintained linear algebra library I can find is [Neo](https://github.com/andreaferretti/neo). It's the only linear algebra library mentioned in the [SciNim](https://scinim.github.io/getting-started/overview/index.html) scientific computing ecosystem overview. Unfortunately, it's been [broken](https://github.com/andreaferretti/neo/issues/50) by a language update since January 2023, and the author doesn't seem to be using Nim anymore. I think the package is unlikely to be fixed unless we do it ourselves.
- There seems to be a command line interface bug in `nlvm` that causes the basic examples in the README to fail. We can work around it, but it makes me worry that if we include `nlvm` in our toolchain, we may end up having to maintain it.
- [Glen:] Oooh, I agree that this whole shallow copy and different garbage collectors thing and memory management being critical but also not being very well surfaced in the language is very scary for maintaining a package like Neo. Seems like perhaps Nim is still more of a laboratory language than a real live in the wild one...
- ⇓ I haven't been able to build working WASM from any code using Neo, the recommended linear algebra library. I've tried `nlvm` and Emscripten with various build options. I suspect that the bug in Neo mentioned above is causing the build failures. *(Aaron)*
- ⇓ Clunky comprehensions (see the examples on the home page) and dicts are not in the language, but rather in the library. (Based on one small slightly hard to find section in the manual, {"a": "b", "c": "d"} is a literal representation for a fixed-length array of pairs of strings, apparently in an effort to be agnostic to different possible dict-like implementations. So in particular, the types in each pair have to match, and all pairs must be the same type.)
- ⇓ Some odd rigidity, such as indentation for continuing expressions is only allowed in certain special places like after a binary operator or a parenthesis. Araq, the "benevolent overlord" of Nim, definitely displays his opinionated rigidity on the forums. Of course, maybe that's what it takes to see a new language through to success...