LINUX.ORG.RU

Новости «Разработка»

Вышла новая версия языка программирования D (2.091.0)

Группа Разработка

Изменения в компиляторе:

  • Окончательно убран деаллокатор классов.
  • Возможность сообщать о номерах строк в стиле GNU.
  • Добавлена экспериментальная генерация заголовочников C++ из внешних (extern) объявлений C|C++: DMD теперь умеет писать заголовочные файлы C++, содержащие биндинги на объявления в существующих файлах D, помеченных как extern(C) или extern(C++).

Изменения в рантайме:

  • Добавлен пропущенный в некоторых местах pthread_attr_destroy.
  • Расширенные биндинги в core.sys.windows.security.
  • Добавлен core.stdcpp.memory.unique_ptr.
  • Добавлен TFD_TIMER_CANCEL_ON_SET.

Изменения в библиотеке:

  • std.bigint теперь @safe.
  • Замена approxEqual на isClose в std.math.
  • Удалён устаревший std.format.Mangle.
  • Удалены устаревшие структуры ByLine, ByChunk, ByRecord из std.stdio.
  • std.algorithm.sorting.schwartzSort теперь поддерживает и бинарные функции трансформации.
  • Добавлена curry в std.functional.

Изменения в инсталляторе:

  • Скрипт инсталляции теперь может исполняться на Windows.

Изменения в Dub:

  • Добавлена переменная окружения SOURCE_FILES.
  • У DUB теперь стиль дополнения zsh.

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

 ,

next_time ()
Мини-новость: Cor - алтернативная ООП система для Perl (40 комментариев)

Релиз кроссплатформенного UI фреймворка MauiKit 1.1.0

Группа Разработка

Проект Maui – это свободное программное обеспечение с открытым исходным кодом, поддерживаемое сообществом KDE и разработанное Nitrux Latinoamericana.

MauiKit – набор элементов управления и инструментов, основанных на QQC2 и Kirigami, совместно используемых в наборе приложений Maui. MauiKit помогает быстро создавать пользовательские интерфейсы, которые соответствуют Maui HIG. Основан на Qt, QML, и C++. Содержит компоненты, готовые к использованию и работающие на Android, Linux, Windows, Mac OS и iOS.

Версия 1.1.0 содержит обновления, новые функции, исправления ошибок. Для этого первого полного релиза пакеты распространяются непосредственно с официальной веб-страницы MauiKit. Это первый официальный стабильный релиз.

( читать дальше... )

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

 , , ,

cocucka ()

Deno 1.0

Группа Разработка

Состоялся мажорный релиз Deno – открытой, безопасной среды выполнения программ на языке TypeScript, обладающей следующими особенностями:

  • Исключительно явный доступ к файловой системе, сети и окружению через установку соответствующих разрешений пользователем;
  • Исполнение TypeScript без Node.JS и tsc;
  • Обратная совместимость с Javascript: любое подмножество программ для Deno, не ссылающееся на глобальное пространство имён Deno и являющееся валидным Javascript кодом можно исполнять в браузере;
  • Поставка в виде единственного исполняемого файла, также содержащего в себе дополнительные инструменты, такие как
    • deno run --inspect-brk: дебаг-сервер, взаимодействующий с Visual Studio Code и инструментами удалённой отладки в Google Chrome;
    • deno install: установщик программ для Deno из удалённых ресурсов. Производит загрузку вместе с зависимостями и добавляет в $HOME/.deno/bin cкрипт для запуска программы;
    • deno fmt: производит форматирование кода;
    • deno bundle: бандлер программ на Deno. Производит js-файл, содержащий в себе программу для Deno и её зависимости;
    • WIP: генератор документации и инструмент аудита зависимостей;
  • Отсутствие зависимости от npm и package.json: внешние модули подгружаются и используются (загрузка по сети происходит только во время первого выполнения, в дальнейшем модуль кэшируется вплоть до вызова с флагом --reload) после указания их URL прямо в программе:
    import * as log from "https://deno.land/std/log/mod.ts";
    
  • Абсолютно все асинхронные операции возвращают Promise, в отличие от Node.JS;
  • Выполнение программы всегда останавливается при возникновении необработанных ошибок.

Deno – встраиваемая среда, и может быть использована для расширения существующих программ на Rust с помощью крейта deno_core.

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

Deno подходит для использования в качестве выполнения скриптов – поддерживается вызов через shebang.
Есть REPL.
Написано на языке программирования Rust.

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

 ,

Princesska ()

Embeddable Common Lisp 20.4.24

Группа Разработка

После трех лет разработки, 24-го апреля, была выпущена новая версия ECL – интерпретатора Common Lisp. ECL, опубликованный под лицензией LGPL-2.1+, может быть использован как в качестве встраиваемого интерпретатора, так и для постройки автономных библиотек и исполняемых файлов (есть возможность трансляции в C).

Изменения:

  • поддержка локальных никнеймов в пакетах;
  • поддержка атомарных операций;
  • специализированное представление сложных типов с плавающей запятой;
  • порт на iOS;
  • исправления для слабых хэш-таблиц и слабых указателей;
  • исправления состояний гонок во внутренностях ECL;
  • синхронизация и кастомные тесты для хэш-таблиц;
  • улучшенная метастабильность и улучшенная поддержка метаобъектного протокола (MOP).

Также у проекта появился второй мейнтейнер.

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

 ,

BOSS-NIGGER ()
Мини-новость: QtProtobuf 0.3.0 (11 комментариев)

Tcl/Tk. Альтернативный диалог выбора файлов для платформ Linux и Android

Группа Разработка

Сегодня скриптовый язык Tcl/Tk используется не только на компьютерах, но и с успехом портирован на платформу Android. Но именно на этой платформе стали особенно видны все недостатки диалога выбора файлов tcl/tk (tk_getSaveFile, tk_getOpenFile или tk_chooseDirectory).

Что не устраивает в этом диалоге? Отсутствие в нем элементарных операций с папками/файлами: создать, уничтожить, переименовать. Нет, не подумайте, в самом tcl все эти механизмы, естественно, реализованы, их просто нет в GUI диалога. В Linux это не так заметно, а вот на платформе Android этот диалог вызывает массу неудобств.

В итоге была создана балалайка (так еще называют пакеты/package для tcl) tkfe (tk file explorer).

При разработке пакета tkfe учитывались не только необходимость хотя бы элементарных операций с файлами/каталогами, но и желание иметь проводник как в отдельном окне, так и в отдельном фрейме, который пользователь может разместить как ему удобно в своем GUI.

В проекте имеется комплексный пример по использованию пакета. Естественно, этот диалог можно также использовать и на других платформах. Не составляет также труда перенести его на Python/TkInter.

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

 , , , ,

TclTk ()

Вышел PyTorch 1.5.0

Группа Разработка

PyTorch — популярный фреймворк для машинного обучения — обновился до версии 1.5.0. Этот релиз включает в себя несколько крупных дополнений и улучшений API, среди которых можно отметить:

  • C++ API, ранее считавшийся экспериментальным, окончательно стабилизирован. Теперь пользователи могут легко переводить свои модели с Python API на C++ API.

  • Стабилизирован пакет torch.distributed.rpc, предоставляющий широкие возможности в распределенном обучении, включая автоматическое вычисление градиентов и обновление параметров модели.

  • Обновлен torch_xla — пакет, который использует компилятор XLA для ускорения обучения моделей на облачных TPU.

  • Также обновлены пакеты torchaudio, torchvision и torchtext, предоставляющие инструменты для разработки моделей, обрабатывающих звуковые, графические и текстовые данные.

  • Python 2 больше не поддерживается. Вся дальнейшая разработка будет вестись только для Python 3.

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

 , ,

ymn ()
Мини-новость: Вышел Python 2.7.18 — последний выпуск ветки Python 2 (103 комментария)
Мини-новость: Lazarus 2.0.8 (157 комментариев)

Вышла бесплатная версия 3D-движка UNIGINE: Community edition

Группа Разработка

Вместе с релизом UNIGINE SDK 2.11 стала доступна UNIGINE 2 Community, бесплатная версия этого кросс-платформенного 3D-движка.

Поддерживаемые платформы - Windows и Linux (начиная с Debian 8; включая отечественный дистрибутив Astra Linux, используемый в оборонной промышленности). Также поддерживается работа с разнообразным VR оборудованием. Под Linux на 100% работает как сам движок, так и идущий в комплекте визуальный редактор 3D сцен (UnigineEditor). В качестве графического API используется OpenGL 4.5+.

На базе UNIGINE Engine выпущена серия GPU бенчмарков (включая популярные Heaven и Superposition), а также разрабатываются профессиональные тренажеры и различные промышленные цифровые двойники. Вышло несколько игр, включая Oil Rush (2012), Cradle (2015), RF-X (2016), Sumoman (2017). В настоящее время готовится к выпуску амбициозная космическая MMORPG Dual Universe. Отличительными особенностями движка является поддержка очень больших виртуальных сцен, наличие большого количества функционала «из коробки», высокая производительность, одновременная поддержка и C++, и C# API. Ряд продвинутых возможностей есть только в коммерческих версиях Sim и Engineering.

Community-версия движка бесплатно доступна независимым разработчикам и проектам с выручкой/финансированием до $100k в год, а также некоммерческим и образовательным организациям.

Разработкой UNIGINE последние 15 лет занимается одноименная компания в Томске.

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

 , , , ,

binstream_ ()

Вышел Crystal 0.34.0

Группа Разработка

Вышла новая версия Crystal, компилируемого языка программирования с синтаксисом Ruby, главные особенности которого — рантайм с «вмонтированным» event loop’ом, в котором все операции ввода-вывода асинхронны, поддержка многопоточности (пока включается флагом при компиляции) и исключительно простая и удобная работа с библиотеками на Си.

Начиная с версии 0.34.0, язык официально начинает твёрдой поступью двигаться в сторону первого настоящего релиза (т.е. версии 1.0).

В новой версии Crystal можно отметить следующие изменения и улучшения в порядке их важности:

  • В API добавлена новая библиотека журналирования Log, которая, в отличие от старой, умеет направлять сообщения в разные бекенды и по-разному эти сообщения фильтровать в зависимости от «источника».

  • Рудименты из мира разработки на Си, Errno и WinError, использовавшиеся для примитивов ввода-вывода, уходят в прошлое благодаря иерархии исключений IO::Error (впрочем, использовать Errno никто пока не запрещает).

  • Убрана автоматическая подстановка else nil из оператора case/when/else. Это сделано для того, чтобы исключить случайный пропуск разработчиком одной из веток when при матчинге по детерминированным случаям наподобие enum’ов и прохода по типам из Union’а. Т.е., проще говоря, вот такой код больше работать не будет без указания ещё одного when (when Char) или задания else-ветки:

a = 1 || 'x' || "foo"
case a
when Int32
  # ...
when String
  # ...
end
  • Опция компилятора disable_overflow больше недоступна. Для операций с переполнением используйте методы &+, &-, &*.

  • Array#fill теперь летает быстрее пули, благодаря замене туповатого цикла на один простой memset;

  • Менеджер шардов (пакетов), называющихся, как это ни парадоксально, shards, теперь использует более быстрый и эффективный алгоритм удовлетворения зависимостей Molinillo, подсмотренный в CocoaPods (Swift) и Builder (Ruby).

  • Добавлена поддержка LLVM 10, что по идее даст нам некий рост производительности, стабильности, etc.

… и множество других, на мой субъективный взгляд, менее существенных улучшений.

Хотелось бы отметить, что Crystal — это построенный на LLVM язык, позволяющий писать приложения порой быстрее, проще и лаконичнее, чем на его интерпретируемых «собратьях», и при этом получать на выходе довольно шустрый бинарник. На фоне Golang выделяется абсолютно полноценным ООП, поддержкой дженериков и очень простым и понятным синтаксисом. По своему назначению во многом аналогичен Nim, но при этом явным образом ориентирован на практическое применение «здесь и сейчас», благодаря чему имеет в своём API-арсенале множество нормально документированных удобных и качественных инструментов, поддерживаемых разработчиками языка и потому весьма стабильных.

>>> Анонс в блоге Crystal

 , ,

DRVTiny ()

Релиз Nim 1.2.0

Группа Разработка

Вышла новая версия системного языка программирования Nim. В ней имеется частичная несовместимость с версией 1.0, например, из-за более строгого преобразования типов. Но на этот случай есть флаг --useVersion:1.0.

Главное нововведение — новый сборщик мусора, включаемый опцией --gc:arc. Автор языка Andreas Rumpf собрается написать подробную статью о преимуществах ARC, а пока предлагает ознакомиться с его выступлением на FOSDEM, где показаны результаты бенчмарков.

  • Компилятор теперь поддерживает опцию --asm для более удобного изучения производимого ассемблерного кода.
  • align pragma может быть использована для переменных и полей объекта, это похоже на alignas в C/C++.
  • =sink оператор теперь опционален. Компилятор теперь может использовать комбинацию =destroy и copyMem для эффективного перемещения объектов.
  • Преобразования в unsigned integers не проверяются в рантайме. Подробности в https://github.com/nim-lang/RFCs/issues/175
  • Новый синтаксис для lvalue: var b {.byaddr.} = expr, подключаемый через import std/decls
  • Компилятор поддерживает новый ключ --panics:on, который превращает рантаймовые ошибки такие как IndexError или OverflowError в фатальные ошибки, которые не могут быть пойманы через try. Это может улучшить эффективность рантайма и размер программы.
  • Генерируемый JS-код использует только пробелы вместо мешанины из пробелов и табов.
  • В компилятор добавлена поддержка .localPassc pragma, с помощью которой можно обработать специальные опции C(++) бэкенда для C(++) файла, который генерируется из текущего модуля Nim.
  • Nimpretty теперь не принимает отрицательный аргумент для настройки отступов, так как это ломало файлы.
  • Добавлены новые макросы (collect, dup, capture), подключаемые через import sugar.

Помимо этого добавлено множество изменений в стандартную библиотеку и множество исправлений багов.

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

 , ,

anonymous ()

LLVM 10.0

Группа Разработка

LLVM – платформа для разработки компиляторов и тулчейнов под лицензией Apache 2.0 с исключениями.

Некоторые изменения в clang:

  • Теперь по умолчанию компиляция не запускается в новом процессе как раньше.

  • Поддерживаются концепты C++20.

  • Арифметика указателей в C и C++ разрешается только в пределах массивов, в соответствии со стандартами. Добавлены соответствующие проверки в Undefined Behavior Sanitizer.

  • Улучшена поддержка OpenCL и OpemMP 5.0.

  • Поведение в ряде случаев приближено к поведению GCC.

Некоторые общие изменения в LLVM:

  • Новые intrinsics для генерации оптимизированных векторных инструкций.

  • Значительно расширены возможности межпроцедурной оптимизации в экспериментальном фреймворке Attractor.

  • Множество улучшений в поддержке различных архитектур (AArch64, ARM, MIPS, PowerPC, SystemZ, X86, WebAssembly, RISC-V).

А также различные улучшения в libclang, clangd, clang-format, clang-tidy, Static Analyzer, LLDB.

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

 , , ,

anonymous ()

GitHub выпустил стабильную версию мобильного приложения

Группа Разработка

GitHub сообщил о завершении стадии бета-тестирования своих мобильных приложений.


GitHub — крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки.

Веб-сервис основан на системе контроля версий Git и разработан на Ruby on Rails и Erlang компанией GitHub, Inc (ранее Logical Awesome). Сервис бесплатен для проектов с открытым исходным кодом и (с 2019 года) небольших частных проектов, предоставляя им все возможности (включая SSL), а для крупных корпоративных проектов предлагаются различные платные тарифные планы.

C 4 июня 2018 года принадлежит корпорации Microsoft


В приложении предоставлены следующие возможности:

  • Отслеживать состояние проекта
  • Просматривать код
  • Разбирать сообщения о проблемах (issue) и отвечать на них
  • Рецензировать pull-запросы
  • Производить слияние изменений

Приложения доступны для Android и для iOS.

>>> Google Play

>>> AppStore

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

 , ,

Zhbert ()

Релиз Java SE 14

Группа Разработка

17 марта была выпущена Java SE 14.

Представлены следующие изменения:

  • На постоянной основе добавлены выражения для switch в виде case VALUE -> {}, которые выходят из условия по умолчанию и не требуют оператора break.
  • Текстовые блоки, ограничиваемые тройкой кавычек """ вышли на второй предварительный этап. Добавлены управляющие последовательности \, которая перед переводом строки не добавляет перевод строки в многострочном блоке, и \s, которая обозначает один пробел.
  • На предварительной основе представлено новое поведение instanceof, позволяющее в дальнейшем развить сравнение по шаблону.
  • На предварительной основе представлены записи с ключевым словом record. Записи автоматически получают методы equals, hashCode, toString, геттеры к членам записи и конструктор.
  • Улучшено описание ошибок NullPointerException.
  • Добавлен упаковщик jpackage для самодостаточных приложений.
  • Порты для Solaris и платформ на SPARC объявлены устаревшими и могут быть исключены в будущем.

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

 , ,

gedisdone ()

Microsoft в лице GitHub приобрела npm

Группа Разработка

GitHub, принадлежащий Microsoft, объявил о приобретении npm, популярного менеджера пакетов для приложений jаvascript. На платформе Node Package Manager размещено более 1,3 миллионов пакетов, а сам сервис обслуживает более 12 миллионов разработчиков.

GitHub заявляет, что npm останется бесплатным для разработчиков и GitHub планирует инвестировать в развитие npm в плане производительности, надёжности и масштабируемости.

В будущем планируется интегрировать GitHub и npm, чтобы ещё больше повысить безопасность и позволить разработчикам тщательно отслеживать npm-пакеты из своих Pull Request. Что же касается платных клиентов npm (Pro, Teams и Enterprise), то GitHub планирует разрешить пользователям перенести свои приватные пакеты npm в GitHub Packages.

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

 , ,

DrRulez ()
Мини-новость: Корректирующий релиз GCC 9.3 (43 комментария)

Memcached 1.6.0 - система кэширования данных в ОЗУ с возможностью сохранения на внешнем носителе

Группа Разработка

8 марта состоялось обновление системы кеширования данных в оперативной памяти Memcached до версии 1.6.0. Основное отличие от предыдущих релизов в том, что теперь для хранилища кэшированных данных стало возможно использовать внешнее устройство.


Memcached применяется для ускорения работы высоконагруженных сайтов или веб-приложений путём кэширования доступа к СУБД и промежуточным данным.


В новой версии при сборке по умолчанию включен параметр extstore, который и отвечает за использование внешнего носителя. Для отключения функции следует указать в ./configure параметр --disable-extstore. Однако несмотря на включенную по умолчанию сборку при запуске следует прямо указать использование этой функции.

Extstore позволяет использовать внешние Flash- или SSD-накопителя для увеличения размера кэша. Это позволит кешировать гораздо большие объемы данных, чем без использования этой функции.

Ещё одним важным нововведением стала переработка сетевого взаимодействия, которое теперь адаптировано для автоматической обработки пакетных обращений в рамках одного системного вызова. В предыдущих версий обработка каждого GET-запроса передавалась в отдельном пакете, тогда как в новой версии ответы на несколько запросов собираются в один метапакет и передаются за один раз. В результате такого нововведения была снижена нагрузка на CPU на 25%.

Также в результате этой модернизации сократилось потребление памяти на буферизацию - с 4.5 Кб до 400-500 байт на вызов, и сократилось использование функций malloc, realloc и free, что привело к меньшей фрагментации памяти. Каждый поток теперь обрабатывает свой пул буферов для чтения и записи для активных соединений. Для настройки размера этих буферов предусмотрены опции -o resp_obj_mem_limit=N и -o read_buf_mem_limt=N.

Также было объявлено о переводе в разряд «устаревших» бинарного протокола обмена с сервером. Ему на смену пришел протокол meta — текстовый вариант протокола с компактными meta-командами. В новом протоколе учтены все доступные ранее операции, использующие старые версии бинарного протокола.

>>> Официальный сайт

>>> Исходный код (лицензия BSD)

>>> Описание Extstore

>>> Описание meta-комманд

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

 

Zhbert ()

PostgreSQL Anonymizer 0.6 - инструмент для анонимизации запросов к базе данных

Группа Разработка

PostgreSQL Anonymizer - дополнение к СУБД PostgreSQL, позволяющее скрыть или изменить конфеденциальные данные или сведения, представляющие коммерческую тайну. Сокрытие данных происходит на лету, используя списки пользователей для анонимизации и настроенные шаблоны правил.

Инструмент можно использовать для предоставления доступа к БД третьим лицам (например, аналитическим сервисам), автоматически вырезая из запросов личные данные, такие как номера телефонов или кредитных карт, либо используя более сложные методы - подмену имен пользователей, наименований компаний и так далее на фиктивную информацию.

При помощи предоставляемой инструментом утилиты pg_dump_anon есть возможность сделать анонимизированный дамп базы данных для передачи его третьим лицам.

>>> Исходный код (лицензия PostgreSQL)

>>> Страница проекта с инструкцией по установке

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

 , ,

Zhbert ()