Релиз языка программирования Nim 1.6.0
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
После года разработки опубликован релиз языка системного программирования Nim 1.6, который использует статическую типизацию и создан с оглядкой на Pascal, C++, Python и Lisp. Исходный код на языке Nim компилируется в представление на C, C++ или JavaScript. В дальнейшем полученный C/C++ код компилируется в исполняемый файл при помощи любого доступного компилятора (clang, gcc, icc, Visual C++), что позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора. По аналогии с Python в Nim в качестве разделителей блоков применяются отступы. Поддерживаются средства метапрограммирования и возможности для создания предметно-ориентированных языков (DSL). Код проекта поставляется под лицензией MIT.
Среди заметных изменений в новом выпуске:
- Добавлен класс iterable[T] с реализацией типа для итераторов.
template sum[T](a: iterable[T]): T =
var result: T
for ai in a: result += ai
result
assert sum(iota(3)) == 0 + 1 + 2 # или 'iota(3).sum'
- Добавлена экспериментальная поддержка анотаций ".effectsOf" для выборочного применения эффектов.
when defined(nimHasEffectsOf):
{.experimental: "strictEffects".}
else:
{.pragma: effectsOf.}
proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp.}
- Предложен новый синтаксис импорта "import foo {.all.}", позволяющий импортировать не только публичные, но и приватные символы. Для доступа к приватным полям объектов добавлены модуль std/importutils и API privateAccess.
from system {.all.} as system2 import nil
echo system2.ThisIsSystem
import os {.all.}
echo weirdTarget
- Добавлена экспериментальная поддержка операторов, начинающихся с точки, которые можно использовать для реализации динамических полей.
import std/json
template '.?'(a: JsonNode, b: untyped{ident}): JsonNode =
a[astToStr(b)]
let j = %*{"a1": {"a2": 10}}
assert j.?a1.?a2.getInt == 10
- В аргументах блока разрешено указание дополнительных параметров.
template fn(a = 1, b = 2, body1, body2) = discard
fn(a = 1):
bar1
do:
bar2
- Реализована поддержка литералов, определяемых пользователем (например "-128'bignum'").
func `'big`*(num: cstring): JsBigInt {.importjs: "BigInt(#)".}
assert 0xffffffffffffffff'big == (1'big shl 64'big) - 1'big
- В компиляторе реализована команда "--eval:cmd" для непосредственного запуска команд на языке Nim из командной строки, например 'nim --eval:"echo 1"'.
- Предоставлена поддержка создания собственных расширений для бэкенда nimscript.
- Значительно расширены сообщения об ошибках, в которых обеспечен показ связанного с ошибкой контекста. Реализованы настраиваемые предупреждения компилятора.
- Значительно улучшена работа сборщиков мусора "--gc:arc" и "--gc:orc".
- Во всех бэкендах улучшена точность и производительность кода для парсинга целых чисел и чисел с плавающей запятой.
- Улучшена совместимость бэкендов JS, VM и nimscript с модулями,
ранее работавшими только с бэкендом C (например, модуль std/prelude). Налажено тестирование модулей stdlib с бэкендами C, JS и VM.
- Добавлена поддержка чипа Apple Silicon/M1, 32-разрядных систем RISC-V, armv8l и CROSSOS.
- Добавлены модули
std/jsbigints, std/tempfiles и std/sysrand. Внесены значительные улучшения в модули system, math, random, json, jsonutils, os, typetraits, wrapnils, lists и hashes.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://nim-lang.org/blog/2021...)
- OpenNews: Релиз языка программирования Nim 1.4.0
- OpenNews: Увидел свет язык программирования Nim 1.0
- OpenNews: Выпуск Snek 1.6, Python-подобного языка программирования для встраиваемых систем
- OpenNews: Выпуск транслятора языка программирования Vala 0.54.0
- OpenNews: Выпуск языка программирования Crystal 1.2
Похожие новости:
- [Веб-дизайн, Разработка веб-сайтов, JavaScript, Программирование] Лёгкая, гибкая, производительная обёртка над Web Animations API — @okikio/animate (перевод)
- [Работа с 3D-графикой, Компьютерная анимация, Физика] Программа для physics-based анимации персонажей Cascadeur вышла в ранний доступ
- Выпуск OpenToonz 1.5, открытого пакета для создания 2D-анимации
- [Разработка под iOS, Разработка мобильных приложений, Интерфейсы, Swift] Настало время офигительных историй. Кастомные транзишены в iOS. [2/2]
- [IT-компании] Минюст США обеспокоен монополией на аниме: Sony покупает Crunchyroll
- [Python, Программирование] Ускоряем код на Python с помощью Nim (перевод)
- [Unity] Подводные камни — Анимация травы (Unity3d)
- [Разработка игр, Дизайн игр] Наши попытки процедурной анимации движения персонажа
- Релиз пакета для создания 2D-анимации Synfig 1.4
- [Исследования и прогнозы в IT, Игры и игровые приставки] Оксфордский университет выявил связь между играми и психическим здоровьем
Теги для поиска: #_nim
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 21:28
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
После года разработки опубликован релиз языка системного программирования Nim 1.6, который использует статическую типизацию и создан с оглядкой на Pascal, C++, Python и Lisp. Исходный код на языке Nim компилируется в представление на C, C++ или JavaScript. В дальнейшем полученный C/C++ код компилируется в исполняемый файл при помощи любого доступного компилятора (clang, gcc, icc, Visual C++), что позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора. По аналогии с Python в Nim в качестве разделителей блоков применяются отступы. Поддерживаются средства метапрограммирования и возможности для создания предметно-ориентированных языков (DSL). Код проекта поставляется под лицензией MIT. Среди заметных изменений в новом выпуске:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 21:28
Часовой пояс: UTC + 5