<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Promise.try и Float16Array из ES2026 в Chrome 145: браузерная поддержка]]></title><description><![CDATA[<p dir="auto">В Chrome 145 появились <strong>Promise.try</strong> и <strong>Float16Array</strong> из ECMAScript 2026. Эти фичи упрощают асинхронный код и работу с графикой, снижая нагрузку на память. Теперь разработчики могут писать чище и эффективнее без полифиллов.</p>
<p dir="auto">Они решают проблемы с обработкой промисов и хранением чисел с плавающей запятой. Promise.try гарантирует, что любой вызов вернет промис, а Float16Array экономит ресурсы для больших массивов. Это важно для фронтенда, где производительность на первом месте.</p>
<h2>Что такое Promise.try и зачем он нужен</h2>
<p dir="auto">Promise.try - это статический метод <strong>Promise</strong>, который принимает функцию и всегда возвращает промис. Если функция возвращает значение, оно оборачивается в fulfilled промис. Если выбрасывает ошибку - в rejected. Это избавляет от ручной обработки try/catch в асинхронном коде.</p>
<p dir="auto">Раньше для такого пришлось бы писать обертку с new Promise и try/catch. Теперь один вызов Promise.try(fn) решает задачу. Полезно при работе с legacy-кодом или библиотеками, которые могут возвращать как промисы, так и синхронные значения. В Chrome 145 это работает стабильно из коробки.</p>
<p dir="auto">Пример: вызываем функцию, которая может сломаться или вернуть число.</p>
<ul>
<li><strong>Синхронный успех</strong>: <code>Promise.try(() =&gt; 42).then(console.log)</code> выведет 42.</li>
<li><strong>Ошибка</strong>: <code>Promise.try(() =&gt; { throw new Error('Бум') })</code> попадет в .catch().</li>
<li><strong>Асинхронный вызов</strong>: <code>Promise.try(() =&gt; fetch('/api'))</code> вернет промис от fetch.</li>
<li><em>Нюанс</em>: метод не меняет поведение setTimeout или других асинхронных API.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Сценарий</th>
<th>Без Promise.try</th>
<th>С Promise.try</th>
</tr>
</thead>
<tbody>
<tr>
<td>Синхронное значение</td>
<td>new Promise(resolve =&gt; resolve(x))</td>
<td>Promise.try(() =&gt; x)</td>
</tr>
<tr>
<td>Синхронная ошибка</td>
<td>new Promise((_, reject) =&gt; reject(err))</td>
<td>Promise.try(() =&gt; { throw err })</td>
</tr>
<tr>
<td>Асинхронная функция</td>
<td>Работает напрямую</td>
<td>Promise.try(asyncFn) возвращает промис</td>
</tr>
</tbody>
</table>
<h2>Float16Array: экономия памяти для графики</h2>
<p dir="auto"><strong>Float16Array</strong> - это типизированный массив для 16-битных чисел с плавающей запятой. Он хранит значения в формате half-precision float, что в 2 раза компактнее Float32Array. Идеально для текстур, вершинных данных и ML-моделей в браузере.</p>
<p dir="auto">В ES2026 добавили не только Float16Array, но и методы DataView: getFloat16/setFloat16. Это позволяет читать/писать half-floats из ArrayBuffer. Chrome 145 поддерживает все это нативно, без дополнительных флагов. Производительность на уровне GPU-задач растет за счет меньшего трафика памяти.</p>
<p dir="auto">Представь обработку изображения 4K: Float32Array съест гигабайты, а Float16Array уложится в мегабайты. Пример создания и записи:</p>
<ul>
<li><strong>Создание массива</strong>: <code>const arr = new Float16Array(1024); arr = 3.14;</code>.</li>
<li><strong>DataView интеграция</strong>: <code>view.setFloat16(0, 1.5, true);</code> с littleEndian опцией.</li>
<li><strong>Math.f16round</strong>: Округляет до half-precision для точности.</li>
<li><em>Важно</em>: диапазон -65504 до 65504, потеря точности для больших чисел.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Тип массива</th>
<th>Размер элемента</th>
<th>Диапазон</th>
<th>Использование</th>
</tr>
</thead>
<tbody>
<tr>
<td>Float16Array</td>
<td>2 байта</td>
<td>±65504</td>
<td>Графика, ML</td>
</tr>
<tr>
<td>Float32Array</td>
<td>4 байта</td>
<td>±3.4e38</td>
<td>Общие вычисления</td>
</tr>
<tr>
<td>Uint16Array</td>
<td>2 байта</td>
<td>0-65535</td>
<td>Целые значения</td>
</tr>
</tbody>
</table>
<h2>Поддержка в Chrome 145 и сравнение с другими</h2>
<p dir="auto">Chrome 145, вышедший в начале 2026, включил Promise.try и Float16Array из финальной спецификации ES2026. Это стабильная версия без origin trials. V8 движок обновлен, полифиллы вроде core-js больше не нужны для этих фич.</p>
<p dir="auto">Сравни с Firefox и Safari: Chrome лидирует по скорости внедрения. Bun уже поддерживал раньше, но для полноценного веба Chrome - эталон. Проверяй поддержку через <code>typeof Float16Array !== 'undefined'</code> или caniuse.</p>
<ul>
<li><strong>Версия Chrome</strong>: 145+ - полная поддержка обеих фич.</li>
<li><strong>Полифиллы</strong>: core-js добавил Promise.try и Float16 методы с feature detection.</li>
<li><strong>Тестирование</strong>: Запусти <code>Promise.try(() =&gt; 1)</code> в консоли - если промис, то ок.</li>
<li><em>Совет</em>: Для старых браузеров используй /actual/ из core-js.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Браузер</th>
<th>Promise.try</th>
<th>Float16Array</th>
<th>Примечание</th>
</tr>
</thead>
<tbody>
<tr>
<td>Chrome 145</td>
<td><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td>Стабильно</td>
</tr>
<tr>
<td>Firefox 129+</td>
<td><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/2705.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--white_check_mark" style="height:23px;width:auto;vertical-align:middle" title="✅" alt="✅" /></td>
<td>С core-js</td>
</tr>
<tr>
<td>Safari</td>
<td><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/26a0.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--warning" style="height:23px;width:auto;vertical-align:middle" title="⚠" alt="⚠" />️</td>
<td><img src="https://forum.exlends.ru/assets/plugins/nodebb-plugin-emoji/emoji/android/1f52e.png?v=a1e94250dac" class="not-responsive emoji emoji-android emoji--crystal_ball" style="height:23px;width:auto;vertical-align:middle" title="🔮" alt="🔮" /></td>
<td>В разработке</td>
</tr>
</tbody>
</table>
<h2>Новые горизонты для JS-разработки</h2>
<p dir="auto">Promise.try и Float16Array открывают двери для оптимизированного кода в Chrome 145. Они решают повседневные боли фронтенда: асинхронность и память. Осталось дождаться полной кросс-браузерной поддержки.</p>
<p dir="auto">Дальше ждем Set-операций и RegExp.escape из той же ES2026. Подумай, как Float16Array изменит WebGL или WebGPU проекты. Это шаг к десктопной производительности в вебе.</p>
]]></description><link>https://forum.exlends.ru/topic/1006/promise.try-i-float16array-iz-es2026-v-chrome-145-brauzernaya-podderzhka</link><generator>RSS for Node</generator><lastBuildDate>Sat, 17 Oct 2026 03:18:31 GMT</lastBuildDate><atom:link href="https://forum.exlends.ru/topic/1006.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Mar 2026 16:18:58 GMT</pubDate><ttl>60</ttl></channel></rss>