惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
The Register - Security
The Register - Security
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
GbyAI
GbyAI
Recent Commits to openclaw:main
Recent Commits to openclaw:main
博客园_首页
D
Docker
S
Security @ Cisco Blogs
K
Kaspersky official blog
爱范儿
爱范儿
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
V
V2EX
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Troy Hunt's Blog
Cloudbric
Cloudbric
博客园 - 三生石上(FineUI控件)
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The Hacker News
The Hacker News
美团技术团队
S
SegmentFault 最新的问题
L
Lohrmann on Cybersecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
宝玉的分享
宝玉的分享
The Last Watchdog
The Last Watchdog
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Martin Fowler
Martin Fowler
Google Online Security Blog
Google Online Security Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tor Project blog
Vercel News
Vercel News
The Cloudflare Blog
G
Google Developers Blog
T
Threat Research - Cisco Blogs
AI
AI
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
Scott Helme
Scott Helme
S
Schneier on Security
大猫的无限游戏
大猫的无限游戏
The GitHub Blog
The GitHub Blog
S
Securelist
IT之家
IT之家
Microsoft Azure Blog
Microsoft Azure Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Dart 3.12 — что нового в Dart?
lil_master · 2026-05-21 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение7 мин

Охват и читатели0

Дайджест

Перевод

В этом году на конференции Google I/O 2026 команды Flutter и Dart отмечают важную тему: «Везде, каждый день, создано всеми, для всех».

Dart 3.12 воплощает эту идею в жизнь. Мы делаем язык более доступным и продуктивным. Лаконичные новые примитивы, такие как приватные именованные параметры, наряду с экспериментальной поддержкой основных конструкторов, делают повседневное программирование более чистым. Но мы не остановились на синтаксическом уровне. Новые функции, такие как Agentic Hot Reload и добавление Genkit в экосистему Dart, гарантируют, что вы сможете создавать высокопроизводительные, готовые к использованию ИИ и агентные приложения, которые будут доступны пользователям в любой точке мира. Это справедливо как для индивидуального программирования, так и для парного программирования с ИИ-агентом.

Так что вперед flutter upgrade, следуйте инструкциям, чтобы изучить новые возможности Dart 3.12. Но помните, что более мощный Dart — это только половина дела. Когда вы будете готовы увидеть, как эти функции преобразуются в красивый пользовательский интерфейс, ознакомьтесь с публикацией в блоге «Что нового во Flutter» или на Хабре.

Обновления языка

Частные именованные параметры

Инициализация формальных переменных в Dart с использованием this.синтаксиса конструктора невероятно удобна. Она напрямую сопоставляет параметр конструктора с полем класса. Это избавляет от необходимости писать повторяющийся код.

Но был один нюанс. Инициализация формальных параметров вызывала проблемы при сочетании именованных параметров с приватными полями. До Dart 3.12 язык не позволял именованному параметру начинаться с подчеркивания:

class Hummingbird {
  final String _petName;
  final int _wingbeatsPerSecond;

  // Compile error! Can't have private named parameter. :(
  Hummingbird({required this._petName, required this._wingbeatsPerSecond});
}

Вместо этого вам приходилось писать явный список инициализаторов:

class Hummingbird {
  final String _petName;
  final int _wingbeatsPerSecond;

  Hummingbird({required String petName, required int wingbeatsPerSecond})
    : _petName = petName,
      _wingbeatsPerSecond = wingbeatsPerSecond;
}

Это было утомительно. Список инициализаторов всего лишь удаляет _. Он добавлял ненужный шаблонный код в простые классы.

В Dart 3.12 язык может сделать это за вас. Теперь мы позволяем вам писать приватные именованные формальные инициализирующие конструкции:

class Hummingbird {
  final String _petName;
  final int _wingbeatsPerSecond;

  // OK with "Private Named Parameters"! :D
  Hummingbird({required this._petName, required this._wingbeatsPerSecond});
}

Этот код ведёт себя точно так же, как и предыдущий пример. Инициализированные поля являются приватными, но параметры конструктора и имена аргументов, записываемые в месте вызова, имеют соответствующие публичные имена:

void main() {
  print(Hummingbird(petName: 'Dash', wingbeatsPerSecond: 75));
}

Подробнее : Документация по приватным именованным параметрам .

Первичные конструкторы (экспериментальная фаза)

Мы рады представить вам предварительный обзор одной из самых востребованных синтаксических функций Dart. Первичные конструкторы представляют собой значительный шаг вперед в плане лаконичности классов. Они устраняют необходимость повторять имена полей и типы в теле класса и списках параметров.

Обычно даже простой класс, состоящий всего из двух полей, требует множества строк повторяющегося шаблонного текста:

class Point {
  final int x;
  final int y;
  Point(this.x, this.y);
}

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

class Point(final int x, final int y);

Эта функция идёт ещё дальше. Она вводит более короткий синтаксис для объявления конструкторов внутри тела класса с использованием ключевых слов  new и factory. Она также позволяет классам с пустым телом заканчиваться простой точкой с запятой:

class Pet {
  String name;

  new() : name = 'Fluffy';
  new withName(this.name);
}

class Dog extends Pet;

В Dart 3.12 в качестве экспериментальной предварительной версии запускаются основные конструкторы. Поскольку это фундаментальное изменение в способе определения классов Dart, ваши отзывы из реальной жизни крайне важны. Вы можете включить эту функцию, используя флаг primary-constructors при запуске вашего проекта:

dart run --enable-experiment=primary-constructors bin/main.dart

Если у вас возникнут какие-либо проблемы или замечания по дизайну, пожалуйста, создайте заявку в репозитории Dart SDK (и не стесняйтесь добавлять в копию @kallentu). Мы с нетерпением ждём ваших отзывов!

Подробнее : Документация по основным конструкторам .

Обновления экосистемы

Предварительный обзор Genkit Dart

Мы рады объявить о предварительном запуске Genkit Dart, фреймворка с открытым исходным кодом для создания полнофункциональных приложений на Dart и Flutter с поддержкой ИИ на любой платформе. Он предоставляет все необходимое для создания приложений с ИИ «из коробки»:

  • API, не зависящий от модели: поддерживает модели Google, Anthropic, OpenAI и совместимые с OpenAI.

  • Типобезопасность: Сочетает строгую систему типов Dart с schematicпакетом для генерации и обработки строго типизированных данных.

  • Запускайте где угодно: напишите логику ИИ один раз и запустите ее в бэкэнд-сервисе или непосредственно в вашем Flutter-приложении.

  • Пользовательский интерфейс разработчика: включает локальный веб-интерфейс для тестирования подсказок, просмотра трассировок и отладки рабочих процессов.

  • Основные примитивы ИИ: встроенная поддержка структурированного вывода, вызова инструментов и многоэтапных процессов.

Вызов нескольких моделей всего несколькими строками кода:

import 'package:genkit/genkit.dart';
import 'package:genkit_google_genai/genkit_google_genai.dart';
import 'package:genkit_anthropic/genkit_anthropic.dart';

void main() async {
  final ai = Genkit(plugins: [googleAI(), anthropic()]);

  // Call Google Gemini.
  final geminiResponse = await ai.generate(
    model: googleAI.gemini('gemini-flash-latest'),
    prompt: 'Hello from Gemini',
  );

  // Call Anthropic Claude.
  final claudeResponse = await ai.generate(
    model: anthropic.model('claude-opus-4.6'),
    prompt: 'Hello from Claude',
  );
}

Пообщайтесь с командой Genkit в Discord и сообщите о любых проблемах на GitHub .

Узнайте больше : Краткое руководство по Genkit Dart .

Cloud Functions для Firebase и экспериментальная поддержка Dart.

Мы также рады сообщить о недавнем объявлении об экспериментальной поддержке Dart в Cloud Functions для Firebase. В течение многих лет расширение функциональности Flutter-приложения для облака означало переключение на другие языки программирования и дублирование структур данных.

Теперь вы можете создать по-настоящему унифицированное полнофункциональное приложение на Dart. Используя шаблон "Shared Package", вы можете напрямую обмениваться моделями данных, правилами валидации и бизнес-логикой между фронтендом и бэкендом, полностью исключая проблему "двойного документирования".

Благодаря компиляции Ahead-of-Time (AOT) в Dart, ваши бессерверные функции выигрывают от невероятно быстрого холодного запуска, обеспечивая мгновенное масштабирование и повышение производительности без необходимости использования Docker-файлов или настройки контейнеров.

Узнайте больше : статья в блоге о Dart и Firebase .

Обновления инструментов

Агентная горячая перезагрузка

Мы получили от нашего сообщества пожелания о бесперебойной работе агентов ИИ при использовании Dart и Flutter. Именно поэтому мы запускаем Agentic Hot Reload для приложений Dart и Flutter — новую функцию, разработанную для обеспечения бесперебойной работы вас и вашего агента программирования. Благодаря использованию сервера Dart MCP ваш агент программирования теперь может автоматически выполнять горячую перезагрузку, устраняя необходимость вручную искать и копировать URI подключения Dart Tooling Daemon (DTD).

В фоновом режиме демон Dart Tooling Daemon автоматически предоставляет информацию о подключении через команду CLI, выполняемую сервером MCP, что позволяет вашему агенту программирования мгновенно обнаруживать и подключаться к работающему приложению в вашем рабочем пространстве.

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

Анимация, демонстрирующая горячую перезагрузку приложения счетчика звезд Flutter сервером Dart MCP после того, как CLI Gemini изменил тему и анимацию звезд. В режиме разделенного экрана слева отображается работающий терминал macOS, а справа — эмулятор Android.

Анимация, демонстрирующая горячую перезагрузку приложения счетчика звезд Flutter сервером Dart MCP после того, как CLI Gemini изменил тему и анимацию звезд. В режиме разделенного экрана слева отображается работающий терминал macOS, а справа — эмулятор Android.

Анализ производительности сервера и диагностика.

Чтобы создать лучшие инструменты для всех, мы хотим понять производительность Dart Analysis Server (DAS) именно так, как вы её ощущаете на своём компьютере. Для этого мы ввели новую dart info record-performanceкоманду.

Разработчики, сталкивающиеся с медленной обработкой данных или зависанием автозавершения кода, могут использовать эту команду для сбора трассировок выполнения и данных профилирования ЦП из активных процессов DAS на своих машинах. Включение этих трассировок в ваши сообщения об ошибках на GitHub предоставляет нашей команде точные данные из реальной жизни, необходимые для диагностики и решения сложных проблем с производительностью. Делясь своими трассировками, вы напрямую помогаете нам сделать Dart быстрее и надежнее для каждого разработчика.

Обновления паба

Встроенная поддержка Git LFS в pub

Использование пакетов с большими файлами стало проще, чем когда-либо. Начиная с Dart 3.12, dart pubреализована встроенная поддержка зависимостей Git с использованием Git Large File Storage (LFS).

Вам не потребуется никаких дополнительных настроек в вашем pubspec.yamlфайле. Пока git lfs на вашем компьютере установлен pub-клиент, он всё обрабатывает автоматически:

dependencies:
  kittens:
    git: https://github.com/munificent/kittens.git

Это существенное улучшение для команд, управляющих версиями больших медиафайлов, моделей данных или бинарных файлов непосредственно в своих репозиториях Git.

Заключение

Dart 3.12 — это важная веха в устранении препятствий для разработчиков. От лаконичных дополнений к синтаксису до бесшовных рабочих процессов ИИ-агентств и более сильной экосистемы ИИ — этот релиз создан для вашей поддержки. Каждая функция разработана для того, чтобы сделать вашу повседневную разработку чистой и эффективной.

Мы с нетерпением ждём, что вы создадите с помощью этих новых возможностей. Надеемся, вы запустите программу flutter upgrade сегодня, чтобы опробовать эти обновления. Если вы тестируете наши экспериментальные функции, такие как основные конструкторы, пожалуйста, поделитесь своим мнением. Вместе мы продолжим создавать язык, который приносит радость разработчикам каждый день и везде.

Подробнее : Список изменений Dart SDK .