Интернет, 29 июля 2022 года. Яндекс опубликовал исходный код и документацию фреймворка userver. Это первый открытый набор инструментов, который позволяет создавать высоконагруженные приложения на языке С++ и протестирован на масштабах уровня Яндекса. Userver используют в Яндекс Go, Лавке, Доставке, Маркете, финтех-проектах и многих других сервисах компании. Фреймворк предоставляется по открытой лицензии Apache 2.0.
Userver лучше всего подходит для разработки приложений с микросервисной архитектурой. Изначально фреймворк разрабатывался в Такси, с его помощью команда перешла с монолитного приложения на архитектуру, которая позволяет разрабатывать отдельные независимые компоненты (микросервисы) и использовать их в разных приложениях.
Микросервисы автономны, поэтому приложение на подобной архитектуре легко обновлять и добавлять в него новые функции. Так, микросервис поиска водителя на заказы в Такси можно использовать для схожей задачи — например поиска курьера для выполнения заказов Яндекс Доставки. То же самое можно проделать и с расчетом времени прибытия водителя или курьера и многими другими задачами.
«Когда мы переходили на микросервисы, мы понимали, что новый фреймворк должен быть как можно проще для разработчиков и бизнеса. Поэтому userver создавали с акцентом на надёжность и удобство, а внутри него есть всё необходимое для разработки, диагностики, мониторинга, отладки и экспериментов. Например, userver подсказывает как исправить ошибки ещё на этапе компиляции, умеет работать с разными базами данных, менять параметры на лету и так далее. Он хорошо подходит для разработки приложений как в небольших, так и в крупных компаниях. И с помощью userver даже новичок может за неделю написать новый микросервис», — говорит Антон Полухин, один из авторов фреймворка и руководитель группы бэкенд-разработки решений для продуктовых команд RideTech и eCom.
Яндекс выкладывает в опенсорс и другие свои ключевые технологии — например, распределенную систему управления базами данных YDB, способную обрабатывать миллионы запросов в секунду, а также библиотеку машинного обучения CatBoost, которую Яндекс применяет в Поиске и других сервисах.
Apache Software Foundation сообщила о релизе Apache NetBeans 14 – интегрированной среды разработки, поддерживающей языки программирования Java, Python, PHP, JavaScript, C, C++ и др.
Проект NetBeans IDE поддерживается и финансируется компанией Oracle, но разработка NetBeans ведётся независимым сообществом разработчиков (NetBeans Community) и компанией NetBeans Org.
Среди изменений 14-ой версии:
доступна сборка с использованием JDK17 и улучшена поддержка новых выпусков Java;
Популярный кроссплатформенный редактор кода Atom выпускаемый под лицензией MIT, возможности которого можно расширять с помощью плагинов, большое количество которых было создано пользователями за множество лет с момента самого первого релиза редактора, больше не будет разрабатываться. Официальный «закат» проекта намечен на 15 декабря 2022 года - Atom и связанные с ним репозитории будут заархивированы.
В GitHub обосновывают свое решение тем, что в последние годы в Atom уже не добавлялись какие-то новые значительные функции, а множество пользователей Atom перешло на использование родственного редактора - Visual Studio Code от Microsoft, во многом вдохновленного Atom, так же имеющего в основе фреймворк Electron (некогда известного как Atom Shell) и так же выпускаемого под свободной лицензией MIT. Теперь усилия разработчиков GitHub будут сосредоточены на проекте GitHub Codespaces, облачной среде разработки на основе VSCode.
Вышла первая публичная версия (0.9.6) тулкита для обратной разработки 16 битных DOS-игр: Masm2c и libdosbox.
Допустим, вы решили переписать движок старой любимой игры под ДОС или специализированного DOS-софта. Кроме того что реверс-инжиниринг сложен, задачу усложняет еще и то, что используется сегментная модель памяти (адресация за раз только 64 КБайт памяти одним сегментным регистром), прямой доступ к старому железу.
Если у вас есть бинарник с движком игры, тулкит позволяет сконвертировать его в работающий переносимый код на C++. Каждая инструкция x86 заменяется аналогичной функцией на С++ (native code). Libdosbox используется для эмуляции видео, звуковых устройств и для проверки конвертации каждой инструкции x86. Получается что-то среднее между декомпиляцией и дизассемблированием.
Если исключить документацию, автоматически генерируемые файлы и инструментарий для формирования самого релиза, в новой версии изменено 190000 строк в 1300 файлах .pm, .t, .c и .h.
Впервые представлен широкой публике язык программирования Hare, который разрабатывает Дрю ДеВолт (автор Sway и SourceHut) со своей командой последние пару лет.
Hare — язык для системного программирования с минималистичным рантаймом, статической типизацией и ручным управлением памятью.
Исходный код компилятора предоставляется под лицензией GPLv3, а для стандартной библиотеки под лицензией MPL (Mozilla Public License).
Компилятор Hare не основан на LLVM или GCC, а использует легковесный qbe (c9x.me). Программы на Hare не линкуются с libc по умолчанию.
Rakudo — компилятор языка программирования Raku, до октября 2019 года называвшегося Perl6. Компиляция осуществляется для MoarVM, JVM и других виртуальных машин.
Доступен первый (из трёх) релиз-кандидат грядущей мажорной версии Erlang/OTP 25.
Цель релиза – получить обратную связь от пользователей. Разработчики приветствуют даже отзывы вида: «У меня всё работает». Подробнее о способах оставить отклик и получить файлы OTP 25-rc1 можно прочитать по ссылке под новостью.
В четверг 27 января состоялся релиз генератора лексических анализаторов re2c 3.0. Основное изменение — добавлена кодогенерация в Rust.
Напомним, что re2c специализируется на генерации быстрых и легко встраиваемых лексеров. Он отличается от более известного аналога flex гибким интерфейсом, генерацией оптимизированных нетабличных лексеров и поддержкой захватов (submatch extraction) на основе детерминированных конечных автоматов с тэгами (TDFA). re2c используется в проектах, где важна скорость работы лексера, например в Ninja и в PHP.
На сайте есть много примеров, теперь и на языке Rust.