6 ms·
Due to the the lack of native strings in WebAssembly different Wasm compilers have different memory layouts and string encodings. For example assemblyscript use
by brainsmith 7y ago
Due to the the lack of native strings in WebAssembly different Wasm compilers have different memory layouts and string encodings. For example assemblyscript uses ucs2 for the sake fo compatibility with JavaScript. This obliges to carefully work with memory bounds, string length estimation due to difference in host native and guest string encodings.
For the specific goal of working with Strings in rust and assemblyscript I've created this project: https://github.com/onsails/wasmer-as https://github.com/onsails/wasmer-as.
- kbumsik 7y agoI'm wondering why AssemblyScript uses UCS-2 instead of UTF-8. Do browsers use UCS-2 as well?
- austincheney 7y agohttps://mathiasbynens.be/notes/javascript-encoding https://mathiasbynens.be/notes/javascript-encoding
- maxgraey 7y agoAS as well as JS interpret code strings as UTF16-LE during follow methods: String.p.codePointAt, String.p.toUpperCase/toLowerCase, String.p.localeCompare, String.p.normalize, String.fromCodePoint, Array.from(str). In rest cases strings interprets as UCS-2.
- johncolanduoni 7y agoThe do in all the observable JS APIs, but behind the scenes there are a number of optimizations in each JS engine to deal with the fact that most JS and JSON source comes off the wire in UTF-8 or ASCII.
- miracle2k 7y agoI've created an equivalent library for Python and used your project as a reference: https://github.com/miracle2k/wasmbind https://github.com/miracle2k/wasmbind