Assemblyscript: Pertimbangkan ekstensi file selain .ts

Dibuat pada 12 Des 2019  ·  46Komentar  ·  Sumber: AssemblyScript/assemblyscript

Hai,

Saya adalah penulis Zwitterion , dan saat ini saya mencoba menambahkan dukungan untuk AssemblyScript. Tujuan Zwitterion adalah memungkinkan transpiling (ke JS) atau kompilasi (ke Wasm) bahasa apa pun untuk pengembangan browser front-end. Bahasa dideteksi berdasarkan ekstensi filenya. Ini sangat sederhana dan memungkinkan Zwitterion untuk membedakan antara JavaScript (.js), TypeScript (.ts), Rust (.rs), Wasm (.wasm), dll.

AssemblyScript tidak memiliki ekstensi file sendiri membuat ini agak sulit. Sekarang, selain kasus penggunaan itu, saya pikir ada banyak alasan lain mengapa memiliki ekstensi file terpisah untuk AssemblyScript masuk akal. Alat analisis statis dan pemahaman pengembang muncul dalam pikiran. Spesifikasi modul ES memungkinkan ekstensi file arbitrer, jadi ini seharusnya tidak menjadi masalah di sana. Meskipun ada kontroversi mengenai masalah ini, menurut saya pribadi jelas bahwa ekstensi apa pun harus diizinkan dalam jalur modul. Deno.js telah menangani masalah ini, saya percaya membuat plugin VS Code yang memungkinkan ekstensi .ts (itu hanya menghentikan kesalahan jenis). Itu mungkin telah berubah baru-baru ini, tetapi mereka juga telah memikirkannya dengan matang.

Maaf sudah bertele-tele. Saya berharap ekstensi file terpisah untuk AssemblyScript akan dipertimbangkan. Terima kasih!

enhancement help wanted tooling

Komentar yang paling membantu

Ya, bendera tersebut mendarat dengan 0.10.0. Penggunaannya adalah --extension .as misalnya, pada dasarnya mengganti .ts dengan .as . Namun, perhatikan bahwa asc memahami persis satu ekstensi pada satu waktu saat ini, sangat mungkin menyebabkan masalah dengan pustaka eksternal yang menggunakan pustaka yang berbeda. Melainkan fitur eksperimental untuk mencoba berbagai hal.

Semua 46 komentar

Ini juga akan berguna untuk server bahasa di vscode!

Ini adalah sesuatu yang mungkin kami pertimbangkan di masa mendatang, tetapi pada kondisi saat ini, yaitu tanpa server bahasa kami sendiri, menggunakan kembali ekstensi .ts tampaknya adalah cara terbaik yang dapat kami lakukan untuk memberikan pengalaman pengembang yang baik.

Namun, ada beberapa indikator yang dapat digunakan alat untuk menentukan seperti apa kode AS

  • Jika ada tsconfig.json extending path/to/std/assembly.json , itu adalah direktori AS
  • Jika package.json memiliki ascMain , itu menunjuk ke file entri AS di dalam direktori dengan kode AS lainnya
  • Demikian pula, jika package.json memiliki skrip asbuild , subskripnya mengarah ke file entri AS
  • Kode AS biasanya berada di assembly/ jika tidak dikonfigurasi sebaliknya

Ini adalah sesuatu yang mungkin kami pertimbangkan di masa mendatang, tetapi pada kondisi saat ini, yaitu tanpa server bahasa kami sendiri, menggunakan kembali ekstensi .ts tampaknya adalah cara terbaik yang dapat kami lakukan untuk memberikan pengalaman pengembang yang baik.

Saya mengerti. Padahal, bukankah mudah untuk menginstruksikan VS Code untuk memperlakukan .as file sebagai file TypeScript? Saya percaya itu. Sepertinya itu akan menjadi cara yang jauh lebih sederhana untuk mendapatkan manfaat dari analisis statis TypeScript di VS Code atau editor serupa, dan masih mendapatkan manfaat dari memiliki ekstensi terpisah.

Terakhir kali saya memeriksa tsc kode keras ekstensi file yang didukung dan satu-satunya cara untuk mengubahnya adalah dengan mempertahankan garpu. Itu sekitar waktu prototipe asc, meskipun, tidak tahu apakah itu berubah.

Saya pikir itu tergantung di sini pada apa yang Anda maksud dengan supported file extensions . TypeScript akan mengkompilasi jalur impor dengan ekstensi file apa pun. Pemeriksa tipe adalah satu-satunya hal yang memiliki masalah dengan ekstensi, dan saya yakin itu tidak terlalu sulit untuk diperbaiki dengan ekstensi Kode VS sederhana. Faktanya, saya yakin Deno telah melakukan ini untuk .ts ekstensi: https://marketplace.visualstudio.com/items?itemName=justjavac.vscode-deno

Juga, saya memiliki VS Code terbuka sekarang, dan saya menginstruksikannya untuk memperlakukan file .as sebagai TypeScript.

Saya baru saja mengintegrasikan AssemblyScript di sini: https://github.com/lastmjs/zwitterion

Berhasil! Tapi, seperti yang saya katakan, itu tergantung pada AssemblyScript yang memiliki ekstensi file sendiri. Untuk saat ini saya telah memilih menggunakan .as . Dan saya telah bereksperimen dengan VS Code sedikit lagi, saya dapat menginstruksikannya untuk menggunakan .as sebagai indikator menjadi file TypeScript, dan itu akan menyimpan konfigurasi itu. Satu-satunya masalah utama yang saya lihat adalah menginstruksikan penganalisis statis TypeScript untuk mengizinkan ekstensi .as, tetapi seperti ekstensi Deno yang saya tautkan di atas, saya rasa ini tidak terlalu sulit.

Apakah ada masalah lain di sini?

Tampaknya masalah ActionScript adalah pemecah kesepakatan untuk .as . Mungkin .asc ?

Secara pribadi tidak suka gagasan ekstensi yang sama dengan kompiler. Saya berharap kami dapat menggabungkan Wasm entah bagaimana, tetapi kami tidak dapat menggunakan .asm dan hanya itu yang dapat saya pikirkan.

Juga @dcodeIO , RocketScript akan menjadi .rs ... Namun, jika kita mengubah nama sekarang adalah waktunya. Satu keluhan saya dengan nama saat ini adalah terlalu banyak suku kata. Sesuai dengan tema luar angkasa kita dapat melakukan Ad Astra , atau Arugula (yang disebut roket di Inggris).

.rs dipesan oleh Rust =)

Hanya ingin mengemukakan bahwa ada masalah ini juga untuk konteks saya: https://github.com/AssemblyScript/assemblyscript/issues/719

Juga, saya pikir Bahasa Github akan menjadi referensi yang baik. Sepertinya ActionScript sudah bertentangan dengan AngelScript, jadi, mungkin taruhan terbaik kami di sini untuk bergerak maju adalah membuka masalah dengan Github dan lihat apakah AssemblyScript dapat ditambahkan ke daftar sebagai .as , karena itu sepertinya yang populer pilihan?

Seperti di, kami bertanya apakah AssemblyScript bisa menjadi: .as dan .assemblyscript ? 🤔

juga, cc @jayphelps karena mereka memiliki wawasan yang sangat bagus di sini 😄

Berikut adalah repo kecil yang menunjukkan hasil GitHub dari .as . Dapat juga bercabang untuk melihat apa yang perlu dilakukan untuk membuat semuanya bekerja baik di sisi TS dan AS:

https://github.com/dcodeIO/asext

Dan ya, RocketScript / .rs sebenarnya saya mencoba melucu :)

Selain itu, berikut adalah dokumen untuk menambahkan bahasa baru ke detektor Bahasa Github: https://github.com/github/linguist/blob/master/CONTRIBUTING.md#adding -a-language 😄

Namun, lakukan beberapa penelitian, dan @dcodeIO benar, tampaknya, KetikanType tidak mendukung ekstensi apa pun selain yang mereka dukung secara eksplisit: https://github.com/microsoft/TypeScript/issues/10939

Saya mulai setuju dengan mungkin .as.ts yang paling masuk akal di sini? 🤔

@ torch2424 .as.ts juga tidak didukung oleh TypeScript dalam impor. Seperti yang saya sebutkan beberapa komentar yang lalu, itu tergantung pada apa yang Anda maksud dengan dukungan. Tampaknya satu-satunya dukungan yang dibutuhkan AssemblyScript adalah dukungan analisis statis di editor seperti Visual Studio Code atau Atom. Apakah ini benar? Lihat solusi Deno untuk mengizinkan ekstensi .ts dalam impor TypeScript: https://github.com/justjavac/vscode-deno/blob/master/README.md Saya tidak membayangkan akan terlalu sulit untuk bercabang dan memperluas plugin ke izinkan ekstensi lain, membuat plugin AssemblyScript untuk VS Code.

Jenis dukungan apa yang dibutuhkan dari TypeScript? Kompilator sudah dapat menangani ekstensi apa pun, pemeriksa ketik adalah satu-satunya hal yang memiliki masalah dengan ekstensi, yang menurut saya mudah diperbaiki dengan plugin

Sepertinya logika sebenarnya untuk memperbaiki kesalahan ekstensi .ts ada di sini: https://github.com/justjavac/typescript-deno-plugin

AssemblyScript akan membutuhkan server bahasanya sendiri pada akhirnya, benar? Sepertinya plugin untuk editor bisa menjadi cara alami untuk memperbaiki masalah ekstensi ini dengan pemeriksa tipe TypeScript. Saya tidak berpikir kita perlu membatasi diri pada sesuatu yang diakhiri dengan .ts

@ torch2424 .as.ts juga tidak didukung oleh TypeScript dalam impor. Seperti yang saya sebutkan beberapa komentar yang lalu, itu tergantung pada apa yang Anda maksud dengan dukungan.

Astaga! Saya melewatkan permintaan maaf saya!

Jenis dukungan apa yang dibutuhkan dari TypeScript? Kompilator sudah dapat menangani ekstensi apa pun, pemeriksa ketik adalah satu-satunya hal yang memiliki masalah dengan ekstensi, yang menurut saya mudah diperbaiki dengan plugin

Ups, mungkin saya salah, saya belum mencobanya, tetapi menemukan masalah terbuka di mana orang tidak dapat menggunakan ekstensi lain 😂

AssemblyScript akan membutuhkan server bahasanya sendiri pada akhirnya, benar? Sepertinya plugin untuk editor bisa menjadi cara alami untuk memperbaiki masalah ekstensi ini dengan pemeriksa tipe TypeScript. Saya tidak berpikir kita perlu membatasi diri pada sesuatu yang diakhiri dengan .ts

Ya saya pikir itu 'benar, @jtenner menyebutkan ini, dan saya pikir mereka memiliki lebih banyak latar belakang tentang itu.

Tapi, jika kita bisa melakukan ssomething di tsconfig, sehingga bisa menggunakan ekstensi kustom untuk file skrip , saya pikir akan lebih baik jika kita menggunakan .as 😄

Saya pikir sudah waktunya kita membuka masalah baru dengan tim TypeScript dan bertanya apakah ada cara untuk menghubungkan ke server bahasa mereka? Pasti ada cara yang lebih baik untuk melakukan ini dengan ekstensi .ts .

Berikut adalah repo kecil yang menunjukkan hasil GitHub dari .as . Dapat juga bercabang untuk melihat apa yang perlu dilakukan untuk membuat semuanya bekerja baik di sisi TS dan AS:

https://github.com/dcodeIO/asext

Dan ya, RocketScript / .rs sebenarnya saya mencoba melucu :)

Ini adalah AngelScript menurut Github: D

Ngomong -ngomong,

Saya mengkompilasi AngelScript ini seperti itu: D

cd wasm && mv main.as f.ts && asc f.ts -b main.wasm -O3 --runtime none; mv f.ts main.as

.as bagus tapi Anda bilang ... itu bertentangan dengan ActionScript? Sobat, saya telah menggunakannya ribuan tahun yang lalu. Macromedia sudah mati. Adobe Flash mati, Flex mati. Jadi ActionScript juga sudah mati. +1 untuk .as nama. Apakah ada pemungutan suara?

Btw, gerakannya keren: js -> ts -> as

(Juga, akan bagus AssemblyScript menjadi superset dari TypeScript, bukan subset)

Saya setuju, .as sepertinya pilihan terbaik, paling alami, dan nyaman, kecuali untuk konflik dengan bahasa lain. Saya pikir jika memungkinkan, jika kita entah bagaimana dapat menghasilkan .as bekerja, maka kita harus melakukannya. Jika bahasa lain mati atau mati, tampaknya masuk akal bahwa AssemblyScript harus memiliki kesempatan untuk membuat ekstensi menjadi hebat.

Mengubah ke .as adalah proses yang sangat sulit. Kami bisa mendapatkan persetujuan dari GitHub (github / linguist). Bahasa harus cukup matang untuk itu. Juga perlu update berbagai editor & IDE.

@MaxGraey ya, itu benar. Dan di mana pun di dokumen, contoh, dll. - di mana saja harus disebutkan .as , - itu mungkin bagian tersulit.

Sangat mudah untuk memperbaiki penyorotan di VSCode:

// settings.json
{
  "files.associations": {
    "*.as": "typescript"
  }
}

Padahal, idealnya itu tidak harus dikelola oleh pengaturan masing-masing orang. Mungkin harus menjadi plugin terpisah, yang akan secara otomatis disarankan setelah Anda membuka file .as untuk pertama kalinya, - jauh lebih ramah pengguna daripada manajemen konfigurasi manual. Atau bahkan membuat PR menjadi plugin TS yang ada untuk menghitung .as sebagai skrip ketikan ... Apakah secara sintaksis setara?

Halo!

Kami berdiskusi tentang masalah ini di https://github.com/AssemblyScript/meta/issues/19

Item utama yang dapat ditindaklanjuti yang kami dapatkan darinya adalah:

Kami memerlukan daftar hal-hal yang perlu dilakukan oleh bahasa tersebut untuk mendapatkan dukungan di sebagian besar IDE Utama, serta Github.

Karena AssemblyScript telah mendukung ekstensi .ts , ini berarti kita perlu membangun semua infra untuk mendukung nama ekstensi kita sendiri. Misalnya, bagaimana kita mendapatkan repo linguis Github, bagaimana kita mendapatkan Dukungan Kode Visual Studio.

Setelah kami memilikinya, kami dapat memecahnya menjadi masalah. Dan kemudian kami dapat memutuskan nama akhir, di mana orang-orang dapat membahas masalah tersebut, dan memulai penerapan.

Ada nama lain yang diusulkan dalam rapat Mingguan (Favorit baru saya adalah .asms (Skrip Asm)), dan ya! 😄

PS Pada saat yang sama, jika kami yakin ingin mengubah nama ekstensi, lebih baik melakukannya sekarang, daripada nanti. Alasannya adalah karena semakin banyak orang yang mengadopsi AS, semakin sulit bagi setiap orang untuk mengubah nama ekstensi.

Bagaimana dengan .at (huruf pertama dan terakhir dari AssemblyScript)?

.as (bentrok dengan 2 bahasa lain di GitHub)
.at
.ast
.asc (bentrok dengan 3 bahasa lain di GitHub)
.asmt
.asmc
.asms
.asmst
.asmscript
.assemblyscript

.as adalah pilihan nomor satu saya tanpa mempertimbangkan bahasa yang bertentangan, kemudian .at dan .asms . Saya menyukai gagasan perpanjangan dua huruf karena sejalan dengan warisan bahasa berbasis JS paling populer, .js dan .ts . Jika kita harus menulis lebih dari dua huruf, saya sangat suka .asms . .ast mungkin bingung dengan Pohon Sintaks Abstrak, dan yang lainnya hanya lebih aneh dari yang saya suka.

Sepertinya .at adalah ekstensi yang sangat tersedia, tidak ada bahasa yang dapat saya temukan, dan hampir tidak ada format file, mungkin satu, dari beberapa pencarian cepat Google.

Berikut daftar yang dihasilkan dari banyak kemungkinan untuk membantu inspirasi:

Luaskan untuk melihat daftar ekstensi lengkap

.ac
.ae
.ai
.al
.am
.ap
.ar
.as
.at
.ay
.abc
.abi
.abl
.abp
.abr
.abs
.abt
.aby
.aci
.acp
.acr
.act
.aeb
.aec
.aei
.ael
.aem
.aep
.aer
.aes
.aet
.aey
.aip
.ait
.alc
.ali
.alp
.alr
.als
.alt
.aly
.amb
.amc
.ami
.aml
.amp
.amr
.ams
.amt
.amy
.apt
.ari
.arp
.art
.asb
.asc
.ase
.asi
.asl
.asm
.asp
.asr
.ass
.ast
.asy
.ayc
.ayi
.ayp
.ayr
.ays
.ayt
.abci
.abcp
.abcr
.abct
.abip
.abit
.ablc
.abli
.ablp
.ablr
.abls
.ablt
.ably
.abpt
.abri
.abrp
.abrt
.absc
.absi
.absp
.absr
.abst
.abyc
.abyi
.abyp
.abyr
.abys
.abyt
.acip
.acit
.acpt
.acri
.acrp
.acrt
.aebc
.aebi
.aebl
.aebp
.aebr
.aebs
.aebt
.aeby
.aeci
.aecp
.aecr
.aect
.aeip
.aeit
.aelc
.aeli
.aelp
.aelr
.aels
.aelt
.aely
.aemb
.aemc
.aemi
.aeml
.aemp
.aemr
.aems
.aemt
.aemy
.aept
.aeri
.aerp
.aert
.aesc
.aesi
.aesp
.aesr
.aest
.aeyc
.aeyi
.aeyp
.aeyr
.aeys
.aeyt
.aipt
.alci
.alcp
.alcr
.alct
.alip
.alit
.alpt
.alri
.alrp
.alrt
.alsc
.alsi
.alsp
.alsr
.alst
.alyc
.alyi
.alyp
.alyr
.alys
.alyt
.ambc
.ambi
.ambl
.ambp
.ambr
.ambs
.ambt
.amby
.amci
.amcp
.amcr
.amct
.amip
.amit
.amlc
.amli
.amlp
.amlr
.amls
.amlt
.amly
.ampt
.amri
.amrp
.amrt
.amsc
.amsi
.amsp
.amsr
.amst
.amyc
.amyi
.amyp
.amyr
.amys
.amyt
.arip
.arit
.arpt
.asbc
.asbi
.asbl
.asbp
.asbr
.asbs
.asbt
.asby
.asci
.ascp
.ascr
.asct
.aseb
.asec
.asei
.asel
.asem
.asep
.aser
.ases
.aset
.asey
.asip
.asit
.aslc
.asli
.aslp
.aslr
.asls
.aslt
.asly
.asmb
.asmc
.asmi
.asml
.asmp
.asmr
.asms
.asmt
.asmy
.aspt
.asri
.asrp
.asrt
.assb
.assc
.asse
.assi
.assl
.assm
.assp
.assr
.asss
.asst
.assy
.asyc
.asyi
.asyp
.asyr
.asys
.asyt
.ayci
.aycp
.aycr
.ayct
.ayip
.ayit
.aypt
.ayri
.ayrp
.ayrt
.aysc
.aysi
.aysp
.aysr
.ayst

Fwiw, saya menyukai .as , sebagian besar untuk alasan estetika ( .js , .ts , _A_ssembly_S_cript). Ingin memiliki server bahasa untuk memanfaatkannya dengan semestinya sebelum beralih.

.as segera membuat saya memikirkan ActionScript, dan sudah ada ekstensi VSCode untuk itu.

Saya akan memilih .asms atau .ascr .

Semua orang sejauh ini telah menyebutkan .a* untuk perpanjangan, tetapi apakah .ts* akan terbuka (seperti .tsas atau .tsa ) karena bercabang dari TS?

Ada juga .was (langkah sebelum .wasm ) tetapi itu mungkin sudah ada

Ada juga yang pergi untuk .ax atau sesuatu yang bukan singkatan langsung.

Masalah ini secara otomatis ditandai sebagai usang karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut. Terima kasih atas kontribusi Anda.

Langkah selanjutnya? Hanya saja, jangan ingin ini menjadi basi

Atau cukup ganti nama Assembly Script menjadi WASM Script yang sedikit lebih deskriptif dan gunakan 'wass' untuk melengkapi WASM, WAST, WASI, WAT, dll.

Masalah ini secara otomatis ditandai sebagai usang karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut. Terima kasih atas kontribusi Anda.

Tidak basi. Bagaimana keputusan dibuat?

@lastmjs Dalam pertemuan terakhir Saul Cabrera menyebutkan bahwa Anda akan mulai bekerja pada server bahasa: smile:

Setelah kami memilikinya, itu akan sangat membantu mendorong masalah ini, karena kami akan memiliki sesuatu yang mengenali sintaks Assemblyscript, dan memungkinkan kami untuk mulai menulis plugin dan hal-hal untuk bahasa di alat lain dan semacamnya: smile:

Dengan begitu, kita tidak perlu bergantung pada alat skrip untuk melakukan pekerjaan ini untuk kita, dan kita dapat mulai mengubah nama ekstensi file dari .ts : smile:

Saya senang masalah ini mendapatkan perhatian. 2 sen saya: .as adalah ekstensi AssemblyScript yang paling intuitif, mirip dengan .js , .ts . Saya senang mendengar tentang pekerjaan di server lang juga, ini akan sangat bermanfaat dalam pengalaman pengembang. Kerja bagus semuanya.

+1 untuk .as .
Tidak perlu khawatir tentang konflik dengan bahasa lama. Mereka pada akhirnya akan memudar.
Kerja bagus, BTW.

Saya di kamp sebagai ekstensi sekarang. Ini mungkin keputusan yang paling sewenang-wenang, tetapi harus dibuat.

@dcodeIO kami memiliki penyorotan sintaks yang tepat yang bekerja dengan ekstensi vscode, dan membuat keputusan tentang hal ini akan segera terjadi, jika memungkinkan.

Sementara itu, saya akan menghabiskan sebagian besar waktu saya untuk mengembangkan ekstensi AssemblyScript yang telah lama ditunggu dan didambakan menggunakan ekstensi file .asc . Berkat metode compileString() , tidak masalah ekstensi mana yang kita gunakan, meskipun itu harus distandarisasi oleh kompilator itu sendiri, dan disertai dengan rilis terbaru dari kompilator.

Mungkin RFC harus dibuka di repo AssemblyScript/meta .

CC @ torch2424 @willemneal dan @MaxGraey

@jtenner Dope: smile: Ya, silakan buka RFC dan tautkan di sini! : smile:: tada:

Masalah ini secara otomatis ditandai sebagai usang karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut. Terima kasih atas kontribusi Anda.

Tidak basi! Bagaimana keputusan itu?

Kami masih menunggu saya untuk menyelesaikan asconfig dan saya yakin flag --extension dikirimkan dengan 0.10. Benar, @dcodeIO?

Ya, bendera tersebut mendarat dengan 0.10.0. Penggunaannya adalah --extension .as misalnya, pada dasarnya mengganti .ts dengan .as . Namun, perhatikan bahwa asc memahami persis satu ekstensi pada satu waktu saat ini, sangat mungkin menyebabkan masalah dengan pustaka eksternal yang menggunakan pustaka yang berbeda. Melainkan fitur eksperimental untuk mencoba berbagai hal.

@dcodeIO Oh wow! Saya tidak tahu bahwa itu telah mendarat! Kerja bagus untuk itu! : smile:: +1:

Untuk proyek sederhana dalam satu file berfungsi, terima kasih! Dan sintaks disorot sekarang.
Tetapi dengan hal-hal seperti rollup-plugin-assemblyscript tidak.

Sunting: Saya menemukan cara untuk memperbaiki plugin ini yang versinya sudah usang. PR: https://github.com/surma/rollup-plugin-assemblyscript/pull/3

Apakah halaman ini membantu?
0 / 5 - 0 peringkat