Buf برای Protobuf سرور LSP ساخت
خلاصهٔ کاملتر
Buf اعلام کرده که اولین سرور LSP کامل و منطبق با استاندارد رو برای Protobuf منتشر کرده. LSP یا Language Server Protocol همون API استانداردیه که پشتیبانی از یه زبان رو به ادیتورهایی مثل VSCode، IntelliJ و Neovim وصل میکنه؛ یعنی پرش به تعریف، تکمیل خودکار کد، پیدا کردن ارجاعها و هایلایت نحوی معنا-محور. به گفتهٔ تیم Buf، تا امروز Protobuf از این امکانات بیبهره بود و این سرور همون خلأ رو پر میکنه.
راهاندازیش سنگین نیست: تو VSCode فقط افزونهٔ Buf رو نصب میکنی و خودش از نسخهٔ نصبشدهٔ Buf CLI استفاده میکنه یا اگه نداشته باشی برات نصبش میکنه. تو Neovim بعد از nvim-lspconfig با یه خط lspconfig.buf_ls.setup {} فعال میشه، و تو بقیهٔ ادیتورها فقط کافیه کاری کنی که دستور buf lsp serve اجرا بشه تا سرور بالا بیاد.
موتور ماجرا protocompile هست؛ همون فرانتاند کامپایلر Protobuf که خود Buf نگهش میداره و به گفتهٔ اونها از protoc هم سریعتره هم منعطفتر — تا جایی که گوگل هم تو بخشهایی از کدبیس عظیمش کنارش استفاده میکنه. برای LSP یه فرانتاند تازهٔ query-driven ساختن — یعنی کامپایلر بهجای یه ترجمهٔ یکبارهٔ کل فایل، به پرسوجوهای جدا جواب میده — که کامپایل تدریجی و تشخیص خطای خیلی دقیقتر رو ممکن میکنه.
بهجای FileDescriptorProto هم یه AST و نمایش میانی جدید طراحی کردن که خطاها رو دقیقتر نشون میده؛ مثلاً برخلاف protoc تکراریبودن مودیفایر repeated رو درست تشخیص میده. این ساختار کممصرفه و ورکاسپیسهای خیلی بزرگ رو هم میکشه. تیم Buf میگه کار تموم نشده و import خودکار، یکپارچگی بیشتر با buf.yaml، تکمیل optionهای سفارشی، پیشنهاد شمارهٔ فیلد و enum و پشتیبانی از Protovalidate تو راهه.
نکات کلیدی:
- سرور LSP داخل خود Buf CLI بستهبندی شده و با buf lsp serve بالا میاد.
- تو VSCode با افزونهٔ Buf و تو Neovim با lspconfig.buf_ls.setup {} فعال میشه.
- فرانتاند تازه query-driven هست و کامپایل تدریجی میده.
- بهجای FileDescriptorProto یه AST و IR جدید طراحی شده تا خطایی مثل repeated تکراری دقیق گزارش بشه.
- ساختار جدید برای قابلیتهای زبانی تازه مثل Editions 2024 هم آمادهست.




