//Без комментариев – Rust 1.12, Nim 0.15 и VC++ Для Linux 1.0,5


• Ржавчина 1.12

• Выпущена версия Nim 0.15.0

• Обновления Visual C++ для Linux 1.0.5

Иногда новости достаточно хорошо освещаются в других местах, и нам мало что остается добавить, кроме как довести их до вашего сведения.

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

Ржавчина 1.12

Rust – это предлагаемый Mozilla язык системного программирования:

“Rust-это язык системного программирования, который работает невероятно быстро, предотвращает сегментирование и гарантирует безопасность потоков. ”

Команда Rust рада сообщить о последней версии Rust, 1.12. Rust-это язык системного программирования со слоганом

“быстро, надежно, продуктивно: выберите три.”

Самым большим изменением, с которым сталкивается пользователь в 1.12 stable, является новый формат сообщения об ошибке, выданный rustc. 

Новый Rust” IR среднего уровня”, обычно называемый “MIR”, дает компилятору более простой способ думать о коде Rust, чем его предыдущий способ работы полностью с абстрактным синтаксическим деревом Rust. Это делает возможным анализ и оптимизацию, которые исторически было трудно правильно реализовать. Первое из многих предстоящих изменений в компиляторе, включенном MIR,-это переписывание прохода, который генерирует LLVM IR, то, что rustc называет “переводом”, и после многих месяцев усилий серверная часть на основе MIR оказалась готовой к прайм-тайму.MIR предоставляет идеальную информацию о потоке управления программой, поэтому компилятор точно знает, перемещаются типы или нет. Это означает, что он статически знает, нужно ли запускать деструктор значения.

В тех случаях, когда значение может быть перемещено или не может быть перемещено в конце области видимости, компилятор теперь просто использует один битовый флаг в стеке, что, в свою очередь, облегчает оптимизацию проходов в LLVM. Конечный результат-меньше работы для компилятора и меньше раздувания во время выполнения. Кроме того, поскольку MIR является более простым “языком”, чем полный AST, также легче реализовать переходы компилятора и легче проверить их правильность.

Самая большая функция, добавленная в этот цикл, – это “рабочие пространства.” Определенные в RFC 1525 рабочие пространства позволяют группе пакетов Rust совместно использовать один и тот же файл Cargo.lock. Если у вас есть проект, разделенный на несколько пакетов, это значительно упрощает сохранение общих зависимостей от одной версии. Чтобы включить эту функцию, большинству многопакетных проектов необходимо добавить один ключ [workspace] в свой Cargo.toml верхнего уровня, но более сложные настройки могут потребовать дополнительной настройки.Еще одной важной особенностью является возможность переопределения источника ящика. Использование этого с такими инструментами, как cargo-vendor и cargo-local-registry, позволяет надежно распределять зависимости локально. 

Выпущена версия Nim 0.15.0

Nim (ранее известный как “Nimrod”) – это статически типизированный императивный язык программирования, который пытается предоставить программисту максимальную мощность без ущерба для эффективности выполнения. Это означает, что он фокусируется на механизмах времени компиляции во всех их различных формах.

Под хорошим синтаксисом на основе инфикса/отступа с мощной (основанной на AST, гигиеничной) макросистемой лежит семантическая модель, которая поддерживает мягкую GC в реальном времени на локальных кучах потоков. Асинхронная передача сообщений используется между потоками, поэтому механизм “остановить мир” не требуется. Небезопасная куча общей памяти также предусмотрена для повышения эффективности, которая является результатом этой модели.

Nim, версия 0.15.0, теперь доступна!

Этот релиз включает в себя почти 180 исправлений ошибок и улучшений.

Некоторые из наиболее существенных изменений в этом выпуске включают в себя: 

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

Макрос multisync был реализован для того, чтобы вы могли определять как синхронные, так и асинхронные процедуры ввода-вывода без необходимости дублировать много кода.

В качестве примера рассмотрим приведенную ниже процедуру recvTwice:

proc recvTwice(сокет: Сокет |  AsyncSocket): Future[string] {.multisync.} =результат = “”

result.add(await socket.recv(25))

result.add(await socket.recv(20))

Макрос multisync преобразует эту процедуру в следующую:

proc recvTwice(сокет: Сокет): строка =

 результат = “”

result.add(socket.recv(25)) result.add(socket.recv(20))

proc recvTwice(сокет: AsyncSocket) Будущее[строка] {.async.} = результат = “”

result.add(await socket.recv(25))

result.add(await socket.recv(20))

Позволяет использовать recvTwice как с синхронными, так и с асинхронными сокетами.

Многие процедуры модуля httpclient устарели в пользу новой реализации с использованием макроса multisync. Теперь существует два типа: HttpClient и AsyncHttpClient. Оба они реализуют одни и те же процедуры и функции, разница только в поддержке тайм-аута и в том, блокируются они или нет. 

Обновления Visual C++ для Linux 1.0.5

В этом выпуске есть некоторые существенные улучшения производительности, которые включают инкрементное копирование и сборку, а также значительное сокращение числа подключений к удаленной машине Linux. Мы также внесли значительные улучшения в IntelliSense 

Шаблон проекта Makefile

Удаленное управление копированием исходного кода

Переопределяемый путь компилятора C/C++

Новые параметры отладки

Добавлен шаблон проекта Makefile, который поддерживает использование внешних систем сборки на удаленной машине (make, gmake, CMake, скрипт bash и т. Д.). Это работает так, как и следовало ожидать, на страницах свойств проекта C++ вы можете задать локальные пути Intellisense, а затем на странице свойств удаленной сборки добавить команды, разделенные точкой с запятой, для запуска сборки на удаленной машине.

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

Теперь вы можете переопределить команды компилятора, используемые на удаленной машине, на страницах свойств. Это позволит вам указать на определенные версии GCC, если это необходимо, или даже указать на альтернативный компилятор, такой как clang. Вы можете использовать либо полные пути, либо команду, доступную на вашем пути.

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

Также были внесены улучшения в отладку. 

Чтобы получать информацию о новых статьях на I Programmer, подпишитесь на нашу еженедельную рассылку,подпишитесь на RSS-канал и следуйте за нами в Twitter, Facebook, Google+ или Linkedin.

Комментарии

Сделайте комментарий или Просмотрите существующие комментарии С помощью Disqus


Добавить комментарий