LINUX.ORG.RU

Bun v1.1.30

 bun, , , ,

Bun v1.1.30

0

3

Тихо и незаметно была опубликована новая стабильная версия Bun – 1.1.30.

Bun – это среда выполнения ECMAScript / JavaScript, по многим параметрам аналогичная nodejs. В основе Bun используется JavaScriptCore от Apple, но сам Bun как и многие его модули написан на языке zig. Bun старается быть максимально совместимым с nodejs по опциям командной строки, поддерживает модули ECMAScript (ESM) и CommonJS. Управление пакетами npm и поддержка typescript встроены прямо в приложение как нативный код, и программы на typescript могут исполняться напрямую интерпретатором без предварительной конфигурации.

Однако Bun не является лишь «копией» nodejs по своим возможностям. Помимо более быстрой работы в ряде сценариев (начиная прямо с запуска приложения) и почти полной поддержки доступного в nodejs API, Bun предоставляет широкие возможности для приложений на сервере – от работы с файлами до трансформации HTML-дерева (HTMLRewriter), модулем транспиляции typescript (Bun.Transpiler), встроенной работе с базами данных sqlite, модулей для взаимодействия с нативными библиотеками платформы через API яызка Си – ffi, встроенный инструментарий тестирования и множество других возможностей.

Кроме того, в экспериментальном режиме Bun поддерживает интеграцию с кодом на Си через прозрачный вызов tcc:

hello.c:

	int hello()
	{
	  return 42;
	}

hello.js:

	import { cc } from "bun:ffi";
	import source from "./hello.c" with { type: "file" };

	const {
	  symbols: { hello },
	} = cc({
	  source,
	  symbols: {
	    hello: {
	      args: [],
	      returns: "int",
	    },
	  },
	});

	console.log("What is the answer to the universe?", hello());


$ bun hello.js
What is the answer to the universe? 42

В этом релизе среди прочего был добавлен парсер CSS на основе LightningCSS который специально для этого был переписан с таких legacy-технологий как rust на zig, что позволило прозрачно интегрировать css и typescript, и теперь можно импортировать css-файл напрямую в модуль typescript:

index.ts:
	import "./style.css";
	import Component from "./MyComponent.tsx";

	// ... rest of your app

style.css:
	/* результат сборки: */
	/* style.css */
	.hello {
	  background: red;
	}

	/* MyComponent.css */
	.MyComponent {
	  color: green;
	}

Bun позволяет собрать всё приложение со всеми ресурсами в единый исполняемый файл.

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: unfo (всего исправлений: 5)

Ответ на: комментарий от goingUp

Пока слишком сыро, ну нафиг. Если переходить — то на что-то совсем другое. Go, например.

InterVi ★★★★★
()
Ответ на: комментарий от cocucka_B_TECTE

зато он наш, попенсорсный!

Will Hare support Windows or macOS?

Hare does not and will not officially support proprietary operating systems upstream. However, Hare is a standardized language and third-parties may build and maintain forks or compatible implementations of Hare targeting these systems.

Is a language server available?

Not yet, but maybe you’ll write one? Ask about it in the community spaces.

Can I use multithreading in Hare?

Probably not.

Why doesn’t Hare have generics?

Omitting generics (and similar features) in Hare is a deliberate design choice which simplifies the language considerably and is more aligned with its design roots in C.

всё как любит местный люд

InterVi ★★★★★
()
Последнее исправление: InterVi (всего исправлений: 1)

У них есть кнопочка «Ask AI», я спросил, почему же такое имя:

I wasn’t able to find a direct answer to your question. The information sources provided don’t contain any specific explanation for why Bun was named as such. For the most accurate and up-to-date information about Bun, including any details about its naming, you may want to check the official Bun documentation or reach out to the Bun community directly.

dataman ★★★★★
()
Ответ на: комментарий от Clayman

Этот народ думает, что ЖС это такие скриптики в браузере

Нет, ЖС это такой рак, который не следит за

1+"1"="11"
и ещё ест мозг начинающих разрабов, отчего такой код повсеместно + вызовы конструкторов вместо функций у нубов.

«нет времени объяснять, программирувай!»

TS, конечно, всё сильно улучшил, но вызвал ответ - «а нафига оно надо?»

Shadow ★★★★★
()
Ответ на: комментарий от InterVi

Ну ок, аффтар, которого в другом треде обозвали Дювалем, перелицевал сишечку, обосрал всех вокруг и сидит довольный. Типичный опенсорс.

cocucka_B_TECTE
()
Последнее исправление: cocucka_B_TECTE (всего исправлений: 1)

Ладно, если без шуток, хоть кто-то видел этот Бунд или Дину в продакшне? Больше похоже на бессмысленный фофан от совсем изнывающих от безделья буржуинов. Теперь ещё зигу какую-то притащили, совсем уже куку.

bread
()
Ответ на: комментарий от goingUp

Что скажут лоровцы по поводу node vs deno vs bun? Имеет ли смысл переходить с ноды?

На Bun нет, потому что он оптимизирован исключительно под макось, и именно там они рисуют свои красивые циферки, А deno это то чем должна быть нода без легаси. Но использовать всё равно нужно ноду, потому что большинство использует ноду, а используя чёт другое есть неплохие риски прогореть и иметь знания по ненужной технологии. Стоит изучать только ради интереса, но упор делать на ноду.

sbu_shpigun
()
Ответ на: комментарий от Shadow

Язык не должен за этим следить, js это такой инструмент, который ты можешь использовать как хочешь, он тебя не ограничивает в творчестве.

sbu_shpigun
()
Ответ на: комментарий от vbr

У меня есть небольшой проект на deno, я задолбался его переписывать каждые полгода, постоянно что-то ломают. Нода просто решает все задачи.

Вот в этом и есть концептуальное отличие подхода дено и ноды. Дено ведёт себя как старая нода, когда какое-то время они накапливают легаси, и потом херак и депрекейтнули, чтобы не упереться в кривость браузера и его возможности.

Нода современная, она уже лет 15 накапливает легаси, и дропать его не собирается, а так то уже упор в возможности браузера подкрадывается, нужно таки много чего выбросить.

Ну и впринципе и то, и то сделано одним человеком.

sbu_shpigun
()
Ответ на: комментарий от dataman

Перед тем как писать вам я проскролил Language Reference, ничего из ряда вон нового я не нашел. За исключением defer и async, но их вряд ли можно назвать чем-то революционно новым.

lbvf50txt
()
Ответ на: комментарий от lbvf50txt

Там «бесцветный» async/await.

Еще про comptime любопытная история.

Мне кажется, что революционного ждать от языка с надписью «a simple language» аршинными буквами на страничке не следует. Надо смотреть, удачно ли выбран набор.

akho
()
Ответ на: комментарий от InterVi

зато он наш, попенсорсный!

всё как любит местный люд

На заглавной странице написано, что Hare это микроязык.

Hare fits on a 3½" floppy disc — these will be available for purchase when Hare 1.0 is released!

Второй абзац faq:

Hare may be the language you need; otherwise, it’s not. Hare is not a “kitchen sink” language: Hare does not attempt to solve every problem, but it does strive to solve the problems we’re interested in well.

Но @InterVi надо прийти и начать возмущаться, что на велосипеде нет 100 сильного двигателя.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 3)
Ответ на: комментарий от th3m3

То было давно. Сейчас рулят веб-апликухи, смузи-приложухи и говнокодзащекуберухи. Не знаю, плохо это или хорошо, но эта штука неплохая замена NodeJS, на которой, как известно, написано куча всего вокруг (нетфликсы, линкедины, трелло, пейпалы, уберы и прочие уюберы). Оно реально быстрее и гибче (гибучее) Ноды. На счет банков то был пример для затравки, там сейчас Нода в основном для клиент-банков. Просто разрабы еще не осознали всю прелесть сабжа.

Gonzo ★★★★★
()
Ответ на: комментарий от Gonzo

Просто разрабы еще не осознали всю прелесть сабжа.

Может и осознали. Но там же кровавый интерпайз, будут долго тянуть легаси.

th3m3 ★★★★★
()
Ответ на: комментарий от Shadow

Если тебе так уж хочется испачкать руки в Си или плюсах, то зачем тебе веб, иди пиши прошивки для микроволновок.

sbu_shpigun
()
Ответ на: комментарий от I-Love-Microsoft

Мне показалось лук репчатый без зелени. Но логотип прекрасный

Пожалуй я не буду говорить о моих ассоциациях. Людей много... Ну и ничего прекрасного я не увидел :)

Rodegast ★★★★★
()
Ответ на: комментарий от vbr

Если ты профессионал, ты пишешь на C++

Зачем нужен zig - для меня загадка

Ещё один подъехал, мнение имеет, а знаний - не имеет.

Нода просто решает все задачи, которые стоят перед серверным жаваскриптом

Сказал, аки Боженька!

Eulenspiegel
()

Хм, почему название проги так гейско звучит?… А, это для жаваскриптовых! И сразу стало понятно

somemong
()
Ответ на: комментарий от Gonzo

это лучшее, что случалось с джаваскриптом.

Появление джаваскрипта само по себе было недоразумением. А когда его притянули на server-side, это стало началом катастрофы.

Kroz ★★★★★
()
Последнее исправление: Kroz (всего исправлений: 4)
Ответ на: комментарий от lbvf50txt

https://ziglang.org/

Ух…

  • No hidden control flow.
  • No hidden memory allocations.
  • No preprocessor, no macros.

Это либо скриптота (глядя на количество синтаксиса, нет), либо очень строгий язык с гарантиями, для Mission Critical модулей, которые даже перезапускать при падении нельзя. Которым вообще падать нельзя. Иначе зачем всё это?

A fresh approach to metaprogramming based on compile-time code execution and lazy evaluation.

Свежий он в 60-х был. 🤦 Подход всё ещё годный, но зачем врать «свежим»?

Gentooshnik ★★★★★
()
Ответ на: комментарий от Gentooshnik

либо очень строгий язык с гарантиями, для Mission Critical модулей, которые даже перезапускать при падении нельзя. Которым вообще падать нельзя. Иначе зачем всё это?

Это аналог Си для тех, кого задолбал UB на каждом шагу, но кто не хочет ни сборщика мусора (который работает в фоне и тормозит в самое неудобное время) ни бороться с системой типов Rust (точнее со случаями, которые не смог доказать Borrow Checker).

Свежий он в 60-х был.

Там три пункта. Остальные два таки свежие.

monk ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.