Design: Dukungan panggilan ekor yang tepat

Dibuat pada 18 Jun 2015  ·  3Komentar  ·  Sumber: WebAssembly/design

Akankah webassembly mendukung panggilan ekor yang tepat? Saat ini ada tautan di https://github.com/WebAssembly/design/blob/master/AstSemantics.md#control -flow-structures yang menyebutkan "fitur panggilan ekor tepat yang dibatasi tanda tangan", menunjukkan bahwa dukungan tersebut telah dipertimbangkan, tetapi tautannya merujuk ke jangkar yang hilang pada halaman fitur posting MVP: https://github.com/WebAssembly/design/blob/master/PostMVP.md#signature -restricted-proper-tail-calls

Jika jawabannya "mungkin", apa cara terbaik untuk berkontribusi membantu dukungan tersebut?

Komentar yang paling membantu

Ya, panggilan ekor yang tepat akan didukung, tetapi kemungkinan tidak di MVP. Ini akan sangat berguna untuk bahasa fungsional yang mengandalkan pengoptimalan panggilan ekor yang dijamin. Lihat diskusi di #33 dan #44. Bagaimana dukungannya masih belum jelas karena membutuhkan eksperimen dan pengukuran kinerja.

Semua 3 komentar

Ya, panggilan ekor yang tepat akan didukung, tetapi kemungkinan tidak di MVP. Ini akan sangat berguna untuk bahasa fungsional yang mengandalkan pengoptimalan panggilan ekor yang dijamin. Lihat diskusi di #33 dan #44. Bagaimana dukungannya masih belum jelas karena membutuhkan eksperimen dan pengukuran kinerja.

Saya telah melihat #33 dan #44, dan #45 tampaknya terkait juga. Tetapi saya skeptis bahwa panggilan ekor yang tepat dapat dicapai melalui mekanisme apa pun yang didasarkan pada analisis aliran kontrol (apakah kontrol aliran yang tidak dapat direduksi didukung atau tidak).

Seperti yang Anda katakan, bahasa fungsional bergantung pada optimasi panggilan ekor yang dijamin, meskipun terminologi seperti itu tidak disukai karena mengundang kebingungan dengan jenis TCO yang dilakukan oleh kompiler C/C++/etc, di mana berbagai batasan dapat dikenakan pada panggilan mana yang memenuhi syarat. Jadi istilah "panggilan ekor yang tepat" digunakan sebagai gantinya. Dalam bahasa dengan panggilan ekor yang tepat, panggilan apa pun dalam posisi ekor diperlukan untuk melepaskan penyimpanan yang ditempati oleh bingkai aktivasi panggilan. Itu termasuk panggilan tidak langsung, karenanya kesulitan untuk analisis aliran kontrol lokal. Jadi kompiler/runtime bahasa fungsional biasanya memiliki operasi panggilan ekor yang eksplisit dan konvensi pemanggilan untuk mendukungnya.

Sangat bagus bahwa Anda terbuka terhadap gagasan dukungan panggilan ekor yang tepat, dan saya dapat memahami bahwa masalah ini di luar cakupan MVP. Tapi bukannya ditutup saja, bisa dibiarkan terbuka tapi diberi label post-MVP/post-whatever/icebox, sehingga jelas masalahnya belum selesai?

Ups maaf, saya tidak bermaksud menutup sebelum memperbaiki dokumentasi. Saya membuka #190 untuk mengatasi masalah ini (dan menutup masalah ini). Kami telah memindahkan masalah ke teks desain, karena memudahkan pembaca baru untuk memahami keadaan daripada membaca seluruh keadaan masalah yang diajukan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

void4 picture void4  ·  5Komentar

chicoxyzzy picture chicoxyzzy  ·  5Komentar

nikhedonia picture nikhedonia  ·  7Komentar

JimmyVV picture JimmyVV  ·  4Komentar

cretz picture cretz  ·  5Komentar