۳۰ آذر ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

خالق Bun.js جارد سامنر درباره فناوری، بودجه و استارت آپ ها صحبت می کند

Bun.js که در سال 2022 راه اندازی شد، به سرعت در حال تبدیل شدن به زمان اجرا جاوا اسکریپت جدید و همه کاره در سمت سرور است.

Bun.js که در سال ۲۰۲۲ راه اندازی شد، به سرعت در حال تبدیل شدن به زمان اجرا جاوا اسکریپت جدید و همه کاره در سمت سرور است.

یکی از جالب ترین پروژه های جاوا اسکریپت جدید Bun.js است، یک زمان اجرا و مجموعه ابزار از ابتدا در سمت سرور. Bun به سرعت در حال جلب نظر توسعه دهندگان با تقریباً ۴۰۰۰۰ ستاره در GitHub است. من این فرصت را پیدا کردم که با خالق Bun جارد سامنر صحبت کنم، که اخیراً بودجه VC را برای استارتاپ خود تضمین کرده است Oven.sh برای کمک به پرورش پروژه. ما در مورد آنچه الهام‌بخش Bun.js، برخی از جنبه‌های فنی آن، و تجربه Jarred در راه‌اندازی یک استارت‌آپ صحبت کردیم.

اطلاعات بیشتر درباره Bun.js

در این مقاله مقدماتی می‌توانید درباره فناوری پشت Bun اطلاعات بیشتری کسب کنید. Bun اخیراً پشتیبانی اولیه را برای یک باندلر داخلی اضافه کرده است—این پروژه را در مسیر تبدیل شدن به فروشگاهی تک مرحله ای برای ابزارهای جاوا اسکریپت سمت سرور قرار داده است.

تایسون: اولین چیزی که فکر می کنم خوانندگان می خواهند بدانند این است: چه چیزی الهام بخش شما برای ایجاد یک زمان اجرا جدید جاوا اسکریپت است؟ اهداف اصلی شما با Bun چیست؟

سامنر: سال‌ها از ابزار آهسته و پیچیده جاوا اسکریپت ناامید بودم. کمی قبل از Bun، من در حال ساخت یک بازی Voxel در مرورگر چند نفره بودم. پایگاه کد بزرگ‌تر شد و زمان از ذخیره کد در ویرایشگر من تا مشاهده تغییر در مرورگر ۳۰ ثانیه بود – به اندازه‌ای طولانی برای خواندن غریزی اخبار هکر. بنابراین من شروع به کار بر روی ابزار ساخت کردم.

تایسون: اهداف اصلی شما با Bun چیست؟

Sumner: Bun یک بسته‌کننده جاوا اسکریپت/تایپ اسکریپت همه‌کاره، ترانسپایلر، مدیر بسته npm و زمان اجرا جاوا اسکریپت است. ما می‌خواهیم جاوا اسکریپت را سریع‌تر اجرا کنیم و نوشتن را ساده‌تر کنیم. بخش مهمی از آن سازگاری اکوسیستم است. Bun به عنوان جایگزینی برای Node.js طراحی شده است. افراد برای استفاده از Bun نباید کد خود را بازنویسی کنند. بسیاری از API های Node.js مانند API ماژول های اصلی Node، fs، path، process و موارد دیگر در Bun تعبیه شده اند (اگرچه ما هنوز روی آن کار می کنید).

تایسون: جالب است! بنابراین، آیا Bun به یک باندلر جداگانه مانند Webpack یا Vite نیاز ندارد؟ (نکته ویرایشی: نسخه داخلی Bun.js باندلر با این گفتگو همزمان شد.)

با پایتون در Visual Studio Code شروع کنید

Sumner: Bun دارای بسته‌کننده و ترانسپایلر خاص خود است که در Zig پیاده‌سازی شده است. هنگامی که یک فایل TypeScript، JSX، یک ماژول CommonJS، ماژول ESM و غیره را اجرا می کنید، به طور خودکار با استفاده از ترانسپایلر Bun ترجمه می شود.

Tyson: با توجه به جنبه Node مانند Bun، آیا خود Node.js را فورک کردید؟ آیا یک حلقه رویداد در قلب Bun وجود دارد، مانند Node و Deno؟

Sumner: نه، ما APIهای Node.js را دوباره پیاده‌سازی می‌کنیم و آنها را سریع‌تر می‌کنیم.

بله، یک حلقه رویداد وجود دارد و بیشتر برای Bun سفارشی ساخته شده است (به استثنای سرور HTTP، که بر اساس uWebSockets).

Tyson: Bun از نظر هدف‌گیری زمان‌های شروع سریع، «نخستین» است (بنابراین نمونه‌ها می‌توانند برای برآورده کردن تقاضا به بالا بچرخند). چگونه به آن دست یافتید؟

Sumner: JavaScriptCore، استفاده از موتور Bun، سریعتر از V8 (موتور Node از آن استفاده می کند) شروع می شود، بنابراین بسیار کمک می کند. بسیاری از API های زمان اجرا Bun در Zig و C++ به جای JS (بر خلاف Node) پیاده سازی می شوند. ما زمان بیهوده ای را صرف ابزارسازی/پروفایل سازی و فکر کردن در مورد عملکرد می کنیم.

همچنین شایان ذکر است که Bun فقط یک زمان اجرا نیست—شما همچنین می توانید از آن به عنوان مشتری npm برای پروژه های Node.js استفاده کنید (bun install) و به عنوان یک اجراکننده اسکریپت package.json (مانند npm run، با این تفاوت که bun run است). همچنین به‌عنوان یک جایگزین npx کار می‌کند—همانطور که در اینجا توضیح داده شد—به نام < code>bunx، که به شما امکان می‌دهد یک فایل اجرایی را از npm نصب و اجرا کنید، اما ۱۰۰ برابر سریع‌تر از npx است.

تایسون: من این توییت را از Builder’s Steve Sewell در آنجا دیدم او از سرعت اجرای bun install شگفت زده شده است. من کنجکاو هستم، آیا bun install به صورت موازی مانند Yarn اجرا می شود؟

Sumner: بله — ماژول ها را حل می کند، دانلود می کند، JSON را تجزیه می کند و تاربال ها را به صورت موازی استخراج می کند. مرحله نصب تک رشته ای است اما به این دلیل است که من آن را محک زدم و معلوم شد که نصب به صورت تک رشته ای سریعتر است.

چگونه SaaS توسعه نرم افزار را تغییر می دهد

تایسون: آیا ذاتاً پسر *nix/C/C++ هستید؟

سامنر: راستش را بخواهید، من زمان بیشتری را به عنوان یک مهندس فرانت اند صرف کردم. ساخت آن بازی Voxel واقعا سخت بود. با انجام این کار چیزهای زیادی درباره عملکرد یاد گرفتم.

تایسون: هاها، من تعجب می کنم که چند نفر از ما شروع به ساخت بازی کردیم. (مال من در حال ساخت کلون های Ultima بود.)

می بینم که شما از کلاینر پرکینز و همچنین گیلرمو راخ از ورسل کمک مالی آورده اید. این باید خیلی هیجان انگیز باشد. وقتی به صورت انفرادی برای ساخت این پروژه نشستید، آیا استارت آپی در ذهن داشتید؟

سامنر: بله. من همیشه دوست داشتم یک استارتاپ راه اندازی کنم. با این حال، زمانی که کار روی آن را شروع کردم، Bun به وضوح یک استارت آپ نبود – فقط به گسترش دامنه ادامه دادم.

تایسون: آیا انگیزه این بود که “دیدن تغییرات من در صفحه خیلی طول می کشد”؟

سامنر: بله. این بازی از Next.js برای سرور توسعه دهنده جلویی استفاده می کرد. من می‌خواستم Next.js را برای سرور برنامه‌نویس Bun کار کنم، به این ترتیب یک زمان اجرا جاوا اسکریپت را به آن اضافه کردم.

تایسون: آیا آن بازی را تمام کردید؟ آیا می توانیم آن را بازی کنیم؟

سامنر: نه، بعد از اینکه واقعاً به Bun رسیدم کار روی آن را متوقف کردم. اگر به اندازه کافی در توییتر من به عقب برگردید، ویدیوهایی از آن را توییت کردم.

تایسون: آیا مدل یا فلسفه یا مربی یا مربی مشابهی دارید که از آن برای اجرای آزمایشی در فرآیند راه اندازی استفاده می کنید؟ (من همیشه کنجکاو هستم که چگونه بنیانگذاران فناوری گرا بیشتر در سمت کسب و کار و تامین مالی استارت آپ ها حرکت می کنند.)

سامنر: من همیشه به نوعی به استارتاپ ها علاقه داشته ام، به عنوان مثال، در سال ۲۰۱۴ بورسیه Thiel را انجام دادم. اما از منظر استارتاپ/جمع آوری سرمایه، توسعه دهندگان واقعاً در مورد Bun هیجان زده هستند. بسیاری از VC ها وقتی دیدند که توسعه دهندگان چگونه به Bun واکنش نشان می دهند، تماس گرفتند. با این حال، شخصاً، قطعاً هنوز زمان زیادی را صرف کدنویسی می کنم. این یک نوع مکان شاد پیش فرض من است.

تایسون: خوب، شما در شرکت خوبی هستید. Brendan Eich کدهای ثابت.

پاسخ به Bun به نوعی شگفت انگیز است. واقعاً جالب است که توسعه‌دهندگان، تجربه توسعه‌دهندگان و جامعه چقدر با این پروژه کارها را هدایت می‌کنند. به هر حال، نام Bun از کجا آمده است؟

مایکروسافت در به‌روزرسانی‌های زبان دات‌نت پشتیبانی می‌کند

سامنر: بله دیوانه کننده و واقعا عالی بود.

یکی از دوستان نام “نان” را پیشنهاد کرد زیرا او یک اسم حیوان دست اموز دارد. واکنش اولیه من این بود: «نمی‌خواهم اسمش را به اسم خرگوش تو بگذارم». و سپس بیشتر در مورد آن فکر کردم و معنی پیدا کرد.

تایسون: هاها، عالی است. من فکر می کنم نامگذاری شرکت “Oven” خنده دار و هوشمندانه است.

سامنر: متشکرم، این نام ایده سرمایه گذار اصلی ما بود.

تایسون: در اینجا یک سوال در سمت چپ وجود دارد: آیا نظری در مورد هوش مصنوعی یا کریپتو دارید؟

سامنر: من در مورد مدل‌های زبانی مشابه Copilot بسیار خوشبین هستم. بسیاری از برنامه‌نویسی‌ها کدهایی هستند که تقریباً به هیچ فکری نیاز ندارند و به نظر می‌رسد مدل‌های زبان در نهایت در کمک به توسعه‌دهندگان واقعاً خوب خواهند بود که زمان کمتری را برای نوشتن چنین کدی صرف کنند.

من فکر می‌کنم آینده‌ای وجود دارد که در آن زبان‌های برنامه‌نویسی برای مدل‌های زبان طراحی می‌شوند به جای اینکه مدل‌های زبان با زبان‌های برنامه‌نویسی موجود تطبیق داده شوند.

من واقعاً در مورد رمزنگاری نظری ندارم.

تایسون: جالب است. من به نوعی می بینم که با فریمورک های متا مانند Mitosis و jHipster نیز در مرتبه بالاتری اتفاق می افتد. تجربه کدنویسی در زبان زیگ چگونه است؟

Sumner: Zig به نوعی شبیه به نوشتن C است، اما با ویژگی‌های ایمنی بهتر حافظه در حالت اشکال‌زدایی و ویژگی‌های مدرن مانند defer (شبیه به Go’s) و کد دلخواه را می توان در زمان کامپایل از طریق comptime اجرا کرد. این واقعا برای نوشتن نرم افزارهای سطح پایین با عملکرد خوب است.

کلمات کلیدی بسیار کمی دارد، بنابراین یادگیری آن بسیار ساده تر از C++ یا Rust است.

تایسون: می‌خواستم بگویم، Rust این روزها به نوعی زبان سیستمی برای کارایی است، و شما به سؤال من پاسخ دادید که چرا به جای آن از Zig استفاده کردید. comptime جالب به نظر می رسد.

سامنر: عالی است. به جای C++-template voodoo، فقط Zig است. چیزهای بسیار کمتری برای یادگیری.

تایسون: متوجه شده‌ام که شما در حال تقریباً پخش زنده برنامه Bun در توییتر هستید< /a>. تماشای آن با رشد و توسعه Bun بسیار سرگرم کننده خواهد بود.