Assemblyscript: Perilaku .toUTF8 vs .fromUTF8 tidak konsisten, membingungkan, dan tidak efisien

Dibuat pada 23 Des 2018  ·  3Komentar  ·  Sumber: AssemblyScript/assemblyscript

WASM adalah mesin virtual tingkat rendah, sehingga harus dapat menangani string yang direpresentasikan sebagai array biner.
Ada metode praktis .fromUTF8 dan .toUTF8: https://github.com/AssemblyScript/assemblyscript/blob/master/std/assembly/string.ts#L499

Namun, mereka tidak simetris dalam tiga cara:

Ini adalah pendekatan yang tidak efisien dan membingungkan. Jika tujuan AssemblyScript adalah menjadi bahasa ramah-WASM tingkat tinggi, maka memiliki C-isme di perpustakaan standar seperti pointer telanjang ke string yang diakhiri null terasa seperti bertentangan dengan tujuan tersebut.

Saran saya adalah mengganti nama .lengthUTF8 dan .toUTF8 menjadi .lengthUTF8ZeroTerminated, .toUTF8ZeroTerminated dan memperkenalkan .toUTF8Buffer yang mengembalikan ArrayBuffer yang diisi dengan konten dan ukuran yang benar. API ini akan jauh lebih jelas dan nyaman bagi pengguna.

enhancement

Komentar yang paling membantu

Solusi alternatif adalah dengan memperkenalkan tipe dasar seperti

class MemSlice {
    constructor(readonly offset: usize, readonly length: usize) {}
    ...
}

yang akan sangat berguna secara umum

Semua 3 komentar

Solusi alternatif adalah dengan memperkenalkan tipe dasar seperti

class MemSlice {
    constructor(readonly offset: usize, readonly length: usize) {}
    ...
}

yang akan sangat berguna secara umum

Setuju, API ini tidak ideal. Bahkan mungkin masuk akal untuk memindahkannya dari kelas string ke sesuatu yang secara khusus menargetkan interop (dengan C).

Api UTF8/UTF16 ditingkatkan dalam PR ini

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

kungfooman picture kungfooman  ·  5Komentar

andy-hanson picture andy-hanson  ·  4Komentar

blooddy picture blooddy  ·  3Komentar

pannous picture pannous  ·  4Komentar

jarble picture jarble  ·  3Komentar