uz
Feedback
Dev News от Максима Соснова

Dev News от Максима Соснова

Kanalga Telegram’da o‘tish

Привет! Меня зовут Максим Соснов и по утрам я читаю всякие разные дайджесты про фронтенд, разработку и управление разработкой. Самые интересные, по моему мнению, ссылки из этих дайджестов я кидаю в этот канал с небольшим описанием. Контакт: @msosnov

Ko'proq ko'rsatish
2 825
Obunachilar
-124 soatlar
+47 kunlar
+2330 kunlar
Obunachilarni jalb qilish
Iyul '26
Iyul '26
+16
0 kanalda
Iyun '26
+46
0 kanalda
Get PRO
May '26
+46
1 kanalda
Get PRO
Aprel '26
+41
0 kanalda
Get PRO
Mart '26
+39
0 kanalda
Get PRO
Fevral '26
+41
0 kanalda
Get PRO
Yanvar '26
+31
0 kanalda
Get PRO
Dekabr '25
+27
1 kanalda
Get PRO
Noyabr '25
+33
1 kanalda
Get PRO
Oktabr '25
+65
2 kanalda
Get PRO
Sentabr '25
+54
1 kanalda
Get PRO
Avgust '25
+52
0 kanalda
Get PRO
Iyul '25
+86
7 kanalda
Get PRO
Iyun '25
+50
0 kanalda
Get PRO
May '25
+57
0 kanalda
Get PRO
Aprel '25
+68
4 kanalda
Get PRO
Mart '25
+79
2 kanalda
Get PRO
Fevral '25
+72
2 kanalda
Get PRO
Yanvar '25
+75
1 kanalda
Get PRO
Dekabr '24
+88
2 kanalda
Get PRO
Noyabr '24
+156
1 kanalda
Get PRO
Oktabr '24
+96
1 kanalda
Get PRO
Sentabr '24
+87
0 kanalda
Get PRO
Avgust '24
+134
3 kanalda
Get PRO
Iyul '24
+87
1 kanalda
Get PRO
Iyun '24
+111
0 kanalda
Get PRO
May '24
+795
2 kanalda
Get PRO
Aprel '24
+41
0 kanalda
Get PRO
Mart '24
+55
1 kanalda
Get PRO
Fevral '24
+63
1 kanalda
Get PRO
Yanvar '24
+98
1 kanalda
Get PRO
Dekabr '23
+94
2 kanalda
Get PRO
Noyabr '23
+31
1 kanalda
Get PRO
Oktabr '23
+88
1 kanalda
Get PRO
Sentabr '23
+58
0 kanalda
Get PRO
Avgust '23
+47
0 kanalda
Get PRO
Iyul '23
+36
0 kanalda
Get PRO
Iyun '23
+44
0 kanalda
Get PRO
May '23
+27
0 kanalda
Get PRO
Aprel '23
+54
0 kanalda
Get PRO
Mart '23
+61
0 kanalda
Get PRO
Fevral '23
+33
0 kanalda
Get PRO
Yanvar '23
+42
0 kanalda
Get PRO
Dekabr '22
+35
0 kanalda
Get PRO
Noyabr '22
+138
0 kanalda
Get PRO
Oktabr '22
+65
0 kanalda
Get PRO
Sentabr '22
+114
0 kanalda
Get PRO
Avgust '22
+18
0 kanalda
Get PRO
Iyul '22
+48
0 kanalda
Get PRO
Iyun '22
+32
0 kanalda
Get PRO
May '22
+15
0 kanalda
Get PRO
Aprel '22
+4
0 kanalda
Get PRO
Mart '22
+4
0 kanalda
Get PRO
Fevral '22
+21
0 kanalda
Get PRO
Yanvar '22
+64
0 kanalda
Get PRO
Dekabr '21
+6
0 kanalda
Get PRO
Noyabr '21
+8
0 kanalda
Get PRO
Oktabr '21
+333
0 kanalda
Sana
Obunachilarni jalb qilish
Esdaliklar
Kanallar
13 Iyul+2
12 Iyul0
11 Iyul0
10 Iyul0
09 Iyul+8
08 Iyul+1
07 Iyul+1
06 Iyul+2
05 Iyul0
04 Iyul+1
03 Iyul0
02 Iyul0
01 Iyul+1
Kanal postlari
Deno 2.9 Вышел Deno 2.9. Пропустил бы релиз, т. к. в целом всё как обычно — улучшают перформанс, улучшают DX, делают лучше интероп с другими пакетными менеджерами. Но в этом релизе добавили сборку desktop-приложений — можно получить GUI без Electron и других обвязок, Deno уже имеет всю инфраструктуру для этого. Как это работает: вы, как обычно, пишете веб-приложение:
Deno.serve(() =>
  new Response(
    "<!DOCTYPE html><h1>Hello from Deno desktop 👋</h1>",
    { headers: { "content-type": "text/html" } },
  )
);
Собираете его:
deno desktop main.ts
Получаете бинарь. Кликаете на него и видите Hello World в GUI. Что умеет из коробки: - Сборка для Windows, macOS, Linux - Системное webview по умолчанию, но можно забандлить CEF (Chromium Embedded Framework) - Управление иконкой в Tray и Dock - Управление окном Звучит прикольно. https://deno.com/blog/v2.9 #development #javascript #typescript #deno #releaseNotes

2
Дайджест за 2026-07-06 - 2026-07-10 eslint-plugin-unicorn Как-то я упустил момент, когда eslint-plugin-unicorn начал активно развиваться. А тем временем там уже больше 300 правил! Правила всякие разные — от специализированных до тех, которые можно использовать в любом проекте. Skills for coding agents Набор скиллов для coding-агентов от BuilderIO. Наборов скиллов много, но здесь мне понравились /visual-plan и /visual-recap, с помощью которых агент может создать план и отчёт, которые удобно читать и в которых используется канвас с диаграммами, мокапами и всем таким. Выглядит круто. The Goldilocks customizable select height Относительно недавно браузеры разрешили полностью кастомизировать <select>. Но, как обычно, чтобы получить идеальное решение, нужно добавить щепотку своего CSS. Jake Archibald в статье показывает, как добавить эту щепотку CSS и получить хороший select. В статье есть интерактивное демо каждого улучшения и видео для тех, у кого браузер не поддерживает все требуемые фичи. —————————————— Спасибо что читаете, ставите реакции, отмечаетесь в комментариях и рассказываете о канале друзьям и коллегам. —————————————— Я работаю в Т-Банке и у нас идет активный найм. Если вам интересна работа в Т-Банке - переходите по ссылке и пишите в личку - отвечу на любые вопросы
501
3
The Goldilocks customizable select height Относительно недавно браузеры разрешили полностью кастомизировать <select>. Но, как обычно, чтобы получить идеальное решение, нужно добавить щепотку своего CSS. Jake Archibald в статье показывает, как добавить эту щепотку CSS и получить хороший select. В статье есть интерактивное демо каждого улучшения и видео для тех, у кого браузер не поддерживает все требуемые фичи. Проблема 1: picker упирается в край viewport По умолчанию список опций упирается в край экрана, и непонятно — это конец списка или есть что-то ещё. Решение банальное — добавить отступ от края: .custom-select::picker(select) { margin-block-end: 1em; } Но: - в Firefox это просто не работает - в Chrome/Safari margin снизу выглядит плохо, когда picker переворачивается и список выпадает вверх Для Firefox: считаем вручную через calc(100% - var(--viewport-margin)). Chrome & Safari: используем position-try-fallbacks: flip-block, flip-inline, … — при перевороте picker'а margin тоже «переворачивается». margin-block-end сверху становится margin-block-start. Проблема 2: picker становится слишком маленьким У Chrome дефолт min-block-size: 1lh. Если упереть select в край экрана, список сжимается и становится неюзабельным. Решение банальное — поднимаем минимальный размер: .custom-select::picker(select) { min-block-size: 12em; } Но тогда короткий список из пары опций начинает выглядеть странно — появляется пустое пространство. Тут Jake использует расчёт размера на основе контента: .custom-select::picker(select) { min-block-size: calc-size(fit-content, min(size, 12em)); } В Firefox и Safari нет calc-size(), там используется :has() для определения количества элементов. Проблема 3: picker становится слишком большим Picker всегда растягивается на всю возможную высоту. Решение: второй max через calc-size(stretch, …): .custom-select::picker(select) { --max-size: 30em; max-block-size: calc-size(stretch, min(size, var(--max-size))); } Итоговый CSS Итого 5 простых строчек (и около 30, если считать фолбек для браузеров, не поддерживающих эти 5 строчек) для улучшения кастомизированного select: .custom-select::picker(select) { min-block-size: calc-size(fit-content, min(size, 12em)); max-block-size: calc-size(stretch, min(size, 30em)); margin-block-end: 1em; } https://jakearchibald.com/2026/goldilocks-select-height/ #development #css #html #select #web #jakeArchibald
647
4
Skills for coding agents Набор скиллов для coding-агентов от BuilderIO. Наборов скиллов много, но здесь мне понравились /visual-plan и /visual-recap, с помощью которых агент может создать план и отчёт, которые удобно читать и в которых используется канвас с диаграммами, мокапами и всем таким. Выглядит круто. Также есть скиллы для организации группы агентов, но они уже менее интересны. https://github.com/BuilderIO/skills #development #ai #agents #cursor #skills
834
5
eslint-plugin-unicorn Как-то я упустил момент, когда eslint-plugin-unicorn начал активно развиваться. А тем временем там уже больше 300 правил! Правила всякие разные — от специализированных до тех, которые можно использовать в любом проекте. https://github.com/sindresorhus/eslint-plugin-unicorn #development #eslint #javascript #typescript #lint
942
6
Why does tsgo use so much memory? Вот и подъехали разборы работы tsgo, на который все мы скоро переедем. На больших проектах он жрёт гигабайты памяти. Автор разбора погонял его на проекте с Next.js и Zod и сделал анализ, куда же уходит память. Короткий ответ: при мультипоточности tsgo создаёт отдельный type checker на каждый поток. У каждого свой state, который не шарится. Также вычисленные типы никогда не освобождаются. При запуске tsgo на 4 потоках 45% памяти уходит на AST, 30% на Checker (400 МБ). При запуске в один поток потребление Checker падает до 50 МБ. У каждого Checker свой state и данные. При запуске tsgo в несколько потоков создаётся несколько Checker, каждый из которых несёт свои данные. Также конструкции Zod вида const emailSchema = z.string().email().min(5).max(120).toLowerCase(); генерируют очень много типов, хотя по итогу нужен только последний. Из хороших новостей: это всё можно оптимизировать и можно ожидать снижение потребления памяти в будущих релизах. https://zackoverflow.dev/writing/why-does-tsgo-use-so-much-memory #development #typescript #tsgo #performance #compiler
1 524
7
Дайджест за 2026-06-15 - 2026-06-19 Deprecating a React component using TypeScript Overload Статья про хитрый способ ввести breaking change в компонент, не создавая ComponentNameV2. Автор использует трюк с TypeScript overloads и @deprecated. ESLint – React – You Might Not Need An Effect ESLint-плагин, который ловит лишние useEffect. Создан по мотивам официальной статьи React You Might Not Need An Effect. Целый набор антипаттернов с конкретными подсказками и ссылками на доку. The Orchestration Tax Addy Osmani рассказывает про «orchestration tax» — налог, который приходится выплачивать, работая с кучей агентов. —————————————— Спасибо что читаете, ставите реакции, отмечаетесь в комментариях и рассказываете о канале друзьям и коллегам. —————————————— Я работаю в Т-Банке и у нас идет активный найм. Если вам интересна работа в Т-Банке - переходите по ссылке и пишите в личку - отвечу на любые вопросы
1 182
8
The Orchestration Tax Addy Osmani рассказывает про «orchestration tax» — налог, который приходится выплачивать, работая с кучей агентов. Переключение контекста не бесплатное — мозг тратит своё мыслетопливо на это переключение. Запускать 20 агентов параллельно — легко. Но переключаться между ними — сложно. Очень быстро устаёшь. Это и есть «orchestration tax». Те, кто занимается архитектурой систем, знают, что 100% утилизация CPU ведёт к задержкам в обработке задач, что в итоге приводит к долгому времени выполнения всех задач. Также работает и наш мозг. Но при этом, запуская 20 агентов и нагружая свою голову на 100%, кажется, что ты очень продуктивен. Но по факту мы путаем перегруженность с продуктивностью. А когда устаёшь, то вместо качественной проверки результата работы агента принимаешь его работу не глядя, что ведёт к низкому качеству итогового решения. Что надо делать, чтобы не попасть в эту ловушку: - Самое важное — не запускать агентов на задачи, требующие вашего внимания, больше, чем вы можете заменеджить - Проверять работу агентов батчами — сразу по нескольку. Проще, чем много раз возвращаться к одной задаче. - Если можно убрать фазу проверки в агента — стоит это сделать. Агенты сами могут запустить тесты, проверить работу приложения и анализировать логи. На этапе старта задачи сразу укажите Definition of Done для задачи, которую агент сможет проверить сам Но главное - развить отдельный навык. Проектировать систему работы с агентами вокруг мысли, что вы - узкое горлышко всей системы. https://addyosmani.com/blog/orchestration-tax/ #development #ai #agents #productivity #engineering
1 156
9
ESLint – React – You Might Not Need An Effect ESLint-плагин, который ловит лишние useEffect. Создан по мотивам официальной статьи React You Might Not Need An Effect. Целый набор антипаттернов с конкретными подсказками и ссылками на доку. Плагин анализирует state, props, refs и их источники, учитывает зависимости effect и пытается держать высокое соотношение полезных срабатываний к шуму. Есть 9 правил: - no-derived-state — derived state в effect вместо вычисления при рендере - no-chain-state-updates — цепочки setState в effect - no-event-handler — effect как event handler через state/props - no-adjust-state-on-prop-change / no-reset-all-state-on-prop-change — сброс state при смене props (вместо key) - no-pass-live-state-to-parent / no-pass-data-to-parent — прокидывание данных наверх через effect - no-external-store-subscription — подписка на внешний store вместо useSyncExternalStore - no-initialize-state — инициализация state в effect Выглядит интересно, надо попробовать. https://github.com/nickjvandyke/eslint-plugin-react-you-might-not-need-an-effect #development #react #eslint #hooks #useeffect #lint
1 272
10
Deprecating a React component using TypeScript Overload Статья про хитрый способ ввести breaking change в компонент, не создавая ComponentNameV2. Автор использует трюк с TypeScript overloads и @deprecated. Что он делает. Есть у вас компонент Card export interface CardProps { title: string; content: string; style?: React.CSSProperties; } const Card = ({title, content, style}: CardProps) => {} Вам нужно сделать новый компонент с тем же интерфейсом. const NewCard = ({title, content, style}: CardProps) => {} При этом вы хотите, чтобы пользователи не автоматически обновляли компонент, а осознанно (ну, допустим, изменение значительное). В этом случае вы делаете враппер export interface NewCardProps extends CardProps { new: true; } function Card(props: CardProps | NewCardProps): React.JSX.Element { if ('new' in props) { return NewCard(props); } return LegacyCard(props); } Все пользователи так и импортируют Card и используют старую реализацию, но надо как-то подсказать пользователям что им надо прокинуть проп new для перехода на новую версию. /* eslint-disable no-redeclare */ /** @deprecated Use Card with "new" prop on it instead */ function Card(props: CardProps): React.JSX.Element; function Card(props: NewCardProps): React.JSX.Element; При таком определении IDE будет отображать использование компонента без пропа new как депрекейтнутное (зачеркивать его). Трюк немного сомнительный, но, вместе с тем, и очень интересный. https://dev.to/mbarzeev/deprecating-a-react-component-using-typescript-overload-2ka #development #react #typescript #components #deprecation #monorepo
1 021
11
Дайджест за 2026-06-08 - 2026-06-12 Bun's unreleased Rust port has 13,365 unsafe blocks. Most can be removed. Сначала Anthropic купили Bun, а затем переписали его с Zig на Rust с помощью Claude Code, но пока не влили. Большое переписывание - большой шитшторм. Быстро вскрылось, что код переписан "плохо" - не rust-way и много unsafe в кодовой базе. Команда Bun опубликовала большой интерактивный аудит всех unsafe-блоков в ещё не выпущенном Rust-порте рантайма. После AI-перевода с Zig на Rust там насчитали 13 365 unsafe — и разобрали каждый: откуда он взялся, можно ли убрать и что для этого нужно. Mitos Oxide Computer выложили в опенсорс Mitos — веб-инструмент для генерации ASCII-арта на основе изображений или gif. Выглядит реально круто. Вставляете картинку или гиф, а экспортируете текст, png или mp4. TypeScript Tips Everyone Should Know Никогда не было и вот опять - читшит с бест практисами по Typescript. 15 простых бест-практисов, которые можно брать в любой проект (или отдать агенту в виде скилла). Т.к. читшит ультра короткий, то приведу примеры из него прямо в посте —————————————— Спасибо что читаете, ставите реакции, отмечаетесь в комментариях и рассказываете о канале друзьям и коллегам. —————————————— Я работаю в Т-Банке и у нас идет активный найм. Если вам интересна работа в Т-Банке - переходите по ссылке и пишите в личку - отвечу на любые вопросы
896
12
TypeScript Tips Everyone Should Know Никогда не было и вот опять - читшит с бест практисами по Typescript. 15 простых бест-практисов, которые можно брать в любой проект (или отдать агенту в виде скилла). Т.к. читшит ультра короткий, то приведу примеры из него прямо в посте Prefer unknown Over any - тут всем всё понятно, unknown безопаснее any Let Type Inference Do the Work - если TS может вывести тип сам, то и не надо его описывать const name = "Ada"; // вместо const name: string = "Ada"; Prefer satisfies Over as - satisfies позволяет проверить на соответствие типу без приведения типов, в отличие от as const routes = { home: "/", about: "/about", } satisfies Record<string, string>; Derive Types From Values Instead of Duplicating Them - получайте типы из значений, а не делайте копию в типах. const roles = ["admin", "user", "guest"] as const; type Role = (typeof roles)[number]; Model Impossible States With Discriminated Unions - делайте некорректные состояния невозможными с помощью Discriminated Unions type State = | { status: "loading" } | { status: "success"; data: User } | { status: "error"; error: Error }; Use Exhaustive Checks With never - при проверках switch/case (да и в других вариантах), в default следует возвращать never. Если вдруг TypeScript поймет, что не все ветвления проверены и можно войти в ветку с never, то TS кинет ошибку function render(state: State) { switch (state.status) { case "loading": return <Spinner />; case "success": return <UserCard data={state.data} />; case "error": return <ErrorMessage error={state.error} />; default: { const exhaustive: never = state; return exhaustive; } } } Use as const for Configuration and Constants - фиксируйте типы конфигов и констант через as const, они будут точнее выведены const theme = { mode: "dark" } as const; Use Type Predicates for Reusable Narrowing function isUser(value: unknown): value is User { return typeof value === "object" && value !== null && "id" in value; } Build New Types From Existing Types - используйте Pick, Omit, Partial, Required и другие type utils для построения производных типов type UserPreview = Pick<User, "id" | "name">; Validate External Data at Runtime - TypeScript не проверяет данные из внешнего мира. Валидируйте их на границе с API const UserSchema = z.object({ id: z.string(), name: z.string(), }); Avoid enum in Most Cases - union проще рефакторить, сериализовать и приносит меньше сюрпризов в рантайме, чем Enum. const roles = ["admin", "user"] as const; // вместо enum Role { Admin, User } Prefer Generics That Infer Automatically - если generic может сам вывести тип — так и делайте. Хороший API не заставляет писать тип вручную getData(userSchema); // вместо getData<User>(userSchema) Enable Strict Compiler Options - удивительно, что в конце списка :). Включите строгий режим проверок. Learn Template Literal Types - используйте строковые шаблоны в типах. type Route = `/api/${string}`; "Type-Safe" Does Not Mean "Runtime Safe" - даже если вы используете строгий TS, у вас нет any, ts-expect-error и всё чётко, это не гарантирует, что в рантайме у вас не будет ошибок. https://github.com/AllThingsSmitty/typescript-tips-everyone-should-know #development #typescript #javascript #best-practices #cheatsheet
1 170
13
Mitos Oxide Computer выложили в опенсорс Mitos — веб-инструмент для генерации ASCII-арта на основе изображений или gif. Выглядит реально круто. Вставляете картинку или гиф, а экспортируете текст, png или mp4. Поиграться можно здесь https://mitos.shared.oxide.computer/ https://github.com/oxidecomputer/mitos #development #oxide #ascii #tools #open-source
1 041
14
Bun's unreleased Rust port has 13,365 unsafe blocks. Most can be removed. Сначала Anthropic купили Bun, а затем переписали его с Zig на Rust с помощью Claude Code, но пока не влили. Большое переписывание - большой шитшторм. Быстро вскрылось, что код переписан "плохо" - не rust-way и много unsafe в кодовой базе. Команда Bun опубликовала большой интерактивный аудит всех unsafe-блоков в ещё не выпущенном Rust-порте рантайма. После AI-перевода с Zig на Rust там насчитали 13 365 unsafe — и разобрали каждый: откуда он взялся, можно ли убрать и что для этого нужно. Важно: версию на Rust ещё не влили. Главный вывод из отчёта: 13 365 unsafe — это очень много, но большинство из них (~9 300) можно перевести в safe. Остальные unsafe останутся, в основном это FFI и работа с C/C++. Сам отчёт просто бомбический: удобно смотреть, классно выглядит, полностью основан на данных и показывает, откуда берутся эти unsafe. Но самый кайф — хороший пример инженерной работы: всё подсчитано, сделан анализ, выводы, показаны детали, которые повлияли на выводы. https://bun.com/bun-unsafe-audit #development #bun #rust #unsafe #audit
1 213
15
ужин?
1
16
Дайджест за 2026-05-18 - 2026-05-22 spawn-agent Библиотека, использующая Vercel AI SDK для запуска локальных AI-агентов на компьютере через Agent Client Protocol. Поддерживает Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Factory Droid, Pi. portless Утилита от Vercel Labs, которая открывает урлы вида http://localhost:3000 на именованных доменах .localhost. Например, вместо http://localhost:3000 можно открывать https://myapp.localhost. Из коробки поддерживает HTTPS и HTTP/2. Warp — открыли исходный код Warp, терминал с Rust, который, как и Zed, прошел большой путь от "мы просто очень быстрый терминал" через "Мы терминал++ - следующее поколение терминалов с крутыми фичами" до "мы теперь AI IDE". Warp выложили исходники в опенсорс. —————————————— Спасибо что читаете, ставите реакции, отмечаетесь в комментариях и рассказываете о канале друзьям и коллегам. —————————————— Я работаю в Т-Банке и у нас идет активный найм. Если вам интересна работа в Т-Банке - переходите по ссылке и пишите в личку - отвечу на любые вопросы
1 467
17
Warp — открыли исходный код Warp, терминал с Rust, который, как и Zed, прошел большой путь от "мы просто очень быстрый терминал" через "Мы терминал++ - следующее поколение терминалов с крутыми фичами" до "мы теперь AI IDE". Warp выложили исходники в опенсорс. Это круто, т.к. лично я считаю, что warp - самый удобный терминал для работы. Банальный textarea, который ведет себя также как редактирование кода в IDE, выводит опыт работы с терминалом на следующий уровень. https://github.com/warpdotdev/warp #development #warp #terminal #open-source #rust #ai
1 477
18
portless Утилита от Vercel Labs, которая открывает урлы вида http://localhost:3000 на именованных доменах .localhost. Например, вместо http://localhost:3000 можно открывать https://myapp.localhost. Из коробки поддерживает HTTPS и HTTP/2. Работает просто: portless myapp dev # https://myapp.localhost portless сам выпустит сертификат и даст доступ к https. Поддерживаются разные фреймворки, порты, под-домены, монорепозитории. Из интересного - подхват git worktree. Если portless видит, что приложение запущено из worktree, то название worktree становится именем домена https://github.com/vercel-labs/portless #development #tools #localhost #vercel #devtools #github
3 191
19
spawn-agent Библиотека, использующая Vercel AI SDK для запуска локальных AI-агентов на компьютере через Agent Client Protocol. Поддерживает Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Factory Droid, Pi. Пример запуска с кастомными cwd, разрешениями и mcp import { generateText } from "ai"; import { spawnAgent } from "spawn-agent"; const { text } = await generateText({ model: spawnAgent("codex", { cwd: "/Users/me/project", permission: "auto-allow", mcpServers: [ { type: "stdio", name: "filesystem", command: "npx", args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"], }, ], }), prompt: "Summarize README.md in three bullets", }); https://github.com/millionco/spawn-agent #development #ai #agents #acp #vercel #github
1 217
20
Дайджест за 2026-05-11 - 2026-05-15 How we made the Angular Compiler faster using AI VoidZero сделали эксперимент — с помощью ИИ сделали компилятор Angular на Rust (на базе Oxc). Итоговые цифры: в 6 раз быстрее чем Angular CLI и в 20 раз быстрее Webpack + @ngtools/webpack на Bitwarden. The Prompt API Команда Chrome встроила API для работы с локальным Gemini Zed is 1.0 Редактор Zed прошел огромный путь и наконец-то получил версию 1.0. Пять лет разработки, собственный UI-фреймворк GPUI на Rust, своя архитектура без Electron. —————————————— Спасибо что читаете, ставите реакции, отмечаетесь в комментариях и рассказываете о канале друзьям и коллегам. —————————————— Я работаю в Т-Банке и у нас идет активный найм. Если вам интересна работа в Т-Банке - переходите по ссылке и пишите в личку - отвечу на любые вопросы
954