The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

03.03.2018 13:58  Новая версия языка программирования Nim 0.18.0

Представлен значительный релиз языка системного программирования Nim 0.18.0. Язык использует статическую типизацию и создан с оглядкой на Pascal, C++, Python и Lisp. Код проекта поставляется под лицензией MIT.

Исходный код на языке Nim компилируется в представление на C, C++ или JavaScript. В дальнейшем полученный C/C++ код компилируется в исполняемый файл при помощи любого доступного компилятора (clang, gcc, icc, Visual C++), что позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора. По аналогии с Python в Nim в качестве разделителей блоков применяются отступы. Регистр написания символов в идентификаторах не учитывается. Поддерживаются средства метапрограммирования и возможности для создания предметно-ориентированных языков (DSL).

В новом выпуске отмечается ряд существенных новшеств и изменений, связанных с проведением чистки стандартной библиотеки перед релизом 1.0. Также внесена большая порция изменений, нарушающих обратную совместимость. Оператор индексирования "[]" теперь выдаёт ошибку, если запрошенный диапазон выходит за границы строки, вместо выдачи подпадающий под запрос части строки (например, var myString = "hello world"; myString[6 .. 45] теперь инициирует исключение IndexError). Также изменена логика обработки коллекций оператором "$" и прекращено приведение массивов array[x, char] к типу cstring. Спецсимвол "\n" теперь выводит только код перевода строки без кода возврата каретки.

Среди новшеств:

  • Добавлен модуль strformat, предоставляющий поддержку форматируемых строковых литералов, позволяющих определить строку, содержащую подстановки (например let name = "Fred"; doAssert fmt"My name is {name}."), в стиле "f"-строк Python 3.6;
  • В генератор документации добавлен макрос runnableExamples, позволяющий протестировать работу приводимых примеров кода;
  • Добавлен новый макрос mapLiterals, упрощающий создание массивов и последовательностей (например, "let x = mapLiterals([12, 34, 15, 1], uint32)");
  • Изменён алгоритм управления памятью. Новый алгоритм TLSF позволяет снизить фрагментацию памяти, ценой усложнения операций alloc и dealloc;
  • Серия изменений в модулях для асинхронного ввода/вывода. Представлена унифицированная реализация asyncdispatch и новая процедура getIoHandler, возвращающая дескриптор ввода/вывода или epoll/kqueue. В модуле asyncjs появилась новая реализация async await для бэкенда JavaScript;
  • Пакетный менеджер Nimble обновлён до версии 0.8.10, в которой появилась возможность размещения нескольких пакетов Nimble в одном репозитории Git или Hg;
  • Из stdlib в обособленные пакеты Nimble переведены библиотеки gentabs, libuv, polynumeric, pdcurses, romans, libsvm и joyent_http_parser. Объявлены устаревшими basic2d и basic3d, вместо которых следует использовать такие пакеты, как glm, arraymancer и neo.


  1. Главная ссылка к новости (https://nim-lang.org/blog/2018...)
  2. OpenNews: Новая версия языка программирования Nim 0.17.0
Лицензия: CC-BY
Тип: Программы
Ключевые слова: nim
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Показать все | RSS
 
  • 1.1, Аноним, 21:58, 03/03/2018 [ответить] [смотреть все]     [к модератору]
  • +5 +/
    Зачем Даже Гвидо признал что это было не лучшей идеей ... весь текст скрыт [показать]
     
     
  • 2.2, пепе, 22:04, 03/03/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +4 +/
    а можно ссылку на это утверждение Гвидо?
     
     
  • 3.3, Аноним, 22:53, 03/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +4 +/
    http www yaml org faq html Но, возможно, он бы стал требовать просто по 4 проб... весь текст скрыт [показать]
     
     
  • 4.4, Аноним, 22:57, 03/03/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +8 +/
    Вы прочитали то, что процитировали? Он не против отступов, он против табуляций. Чтобы творческие личности могли в один отступ два пробела вставить, а в другой шесть. Пробелы хороши в функциональных языках - там всё равно нет отступов, лишь выравнивание. Но в императивных языках запрещать надо, скорее, пробелы, чем табуляции.
     
     
  • 5.5, анонимус, 00:00, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    Было бы логичней, как раз, в начале строки пользоваться табуляцией, а после перв... весь текст скрыт [показать]
     
     
  • 6.10, Аноним, 02:11, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    А не логичней было бы сперва ознакомиться с мат частью, а уж потом рассуждать на... весь текст скрыт [показать]
     
     
  • 7.39, анонимус, 07:53, 05/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Это и есть глупость Если после непробельных символов используется таб, то форма... весь текст скрыт [показать]
     
     
  • 8.48, Аноним, 14:39, 05/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ну, если авторитет опеннета так считает Самому компилятору интерпретатору это д... весь текст скрыт [показать]
     
     
  • 9.49, Аноним, 14:43, 05/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    fix ... весь текст скрыт [показать]
     
  • 6.15, Ydro, 11:24, 04/03/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +7 +/
    То есть кроме отступов, табуляций и пробелов вас двоих ни чего не беспокоит в Nim? :-)
     
  • 6.21, Аноним, 14:24, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +3 +/
    Хорошо, что не все программисты школьники-дегенераты, и поэтому пользуются пробе... весь текст скрыт [показать]
     
     
  • 7.27, вапвап, 19:05, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    К отступам и пробелам чувствительна СКВ, поэтому, чтобы не париться с мержами ко... весь текст скрыт [показать]
     
  • 7.36, Аноним, 21:44, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Как раз пробелами пользуются только те, кто не понимает, что такое отступ Я ту... весь текст скрыт [показать]
     
  • 7.38, Аноним, 22:07, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Можете привести пару а лучше больше объективных уважительных причин использова... весь текст скрыт [показать]
     
  • 7.40, анонимус, 07:54, 05/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –2 +/
    Дегенераты как раз пользуются пробелами в начале строки ... весь текст скрыт [показать]
     
     
  • 8.52, sdkisik, 15:10, 05/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Дегенераты вообще не пользуются форматированием кода, ни табуляциями, ни пробела... весь текст скрыт [показать]
     
  • 5.57, nich, 18:53, 06/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Гвидо против табуляции, и правильно Все осходники, использующие табуляцию, ран... весь текст скрыт [показать]
     
  • 4.6, Аноним, 00:12, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Ты, наверно, до того как начал использовать питон, код не форматировал в принцип... весь текст скрыт [показать]
     
     
  • 5.7, Аноним, 01:05, 04/03/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Не знаю, как он, но спасибо что решили за всех, как им форматировать
     
     
  • 6.32, Аноним, 20:23, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    В Golang, так любимом ненавистниками Python, форматирование тоже принудительное ... весь текст скрыт [показать]
     
     
  • 7.42, angra, 10:32, 05/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    ЕМНИП оно принудительное только в паре мест, где нельзя перенести открывающую фи... весь текст скрыт [показать]
     
  • 4.8, Онаним, 01:45, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Оптимално по 2 ящетаю Серьёзно Вообще уверен он имел вииду именно это Я тоже ... весь текст скрыт [показать]
     
  • 4.9, Аноним, 02:04, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    https nim-lang org docs manual html Все верно сделанно Хоть 1, хоть 10 Главн... весь текст скрыт [показать]
     
  • 1.11, Tita_M, 04:53, 04/03/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    >оглядкой на Pascal

    Что там от паскаля? Да и оберон уже давно есть.

     
     
  • 2.33, Аноним, 20:25, 04/03/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • –1 +/
    Ну и пиши на своём Обероне. Много напишешь?
     
     
  • 3.37, Tita_M, 21:44, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Имелось ввиду зачем ориентироваться на паскаль если можно было вдохновляться тем... весь текст скрыт [показать]
     
  • 1.12, leap42, 05:53, 04/03/2018 [ответить] [смотреть все]    [к модератору]  
  • +7 +/
    > позволяет добиться производительности близкой к Си, если не учитывать затраты на выполнение сборщика мусора

    а если ещё какие-нибудь не учитывать, то даже быстрее получится

    а если вообще никакие не учитывать, то все расчёты будут мгновенными

     
     
  • 2.19, Аноним, 13:07, 04/03/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Ну GC там и вправду мало жрущий К тому же легко отключается Хоть полностью, хо... весь текст скрыт [показать] [показать ветку]
     
  • 2.31, Аноним, 19:22, 04/03/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Хочешь - не учитывай, никто не мешает https nim-lang org docs manual html ... весь текст скрыт [показать] [показать ветку]
     
  • 2.45, Аноним, 13:45, 05/03/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Ну так в случае с Java так и получается ... весь текст скрыт [показать] [показать ветку]
     
  • 1.13, Anonymoustus, 06:35, 04/03/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    > Исходный код на языке Nim компилируется в представление на C, C++ или JavaScript. В дальнейшем полученный C/C++ код компилируется в исполняемый файл при помощи любого доступного компилятора

    Что за блажь такая — всё усложнять дважды делать одну работу? В чём фишка?

     
     
  • 2.14, juniper рулит, 07:45, 04/03/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    обычное дело в эти дни, вы видимо имеете очень смутное представление об устройст... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.16, Аноним, 11:25, 04/03/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Почему только современных? И C++ изначально в C транслировался.
     
     
  • 4.46, Crazy Alex, 14:27, 05/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    А потом как смогли - стали делать нормальные компиляторы И по сей день продолжа... весь текст скрыт [показать]
     
  • 3.17, Anonymoustus, 12:22, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Анонимы опеннета, видимо, патологически неспособны понять написанное, а отсутств... весь текст скрыт [показать]
     
     
  • 4.18, Аноним, 13:04, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Fixed ... весь текст скрыт [показать]
     
  • 4.20, Аноним, 13:53, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Просто у Nim дико маленокое комьюнити и написать полноценный фасад к какому-нибу... весь текст скрыт [показать]
     
     
  • 5.23, Аноним, 15:45, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Один чувак осилил, но Araq создатель языка сказал, что он добавит LLVM в главн... весь текст скрыт [показать]
     
     
  • 6.28, Аноним84701, 19:09, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    В чем-то он прав 8211 обратная совместимость в LLVM довольно регулярно ломает... весь текст скрыт [показать]
     
  • 4.25, DerRoteBaron, 18:12, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Аналогично, зачем писать на любом сколько-нибудь высокоуровневом языке, если все... весь текст скрыт [показать]
     
     
  • 5.35, Аноним, 20:30, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –2 +/
    Не стоит метать бисер перед Anonymoustus Он объявился в новостях недавно, а уже... весь текст скрыт [показать]
     
  • 4.26, Василий Теркин, 19:03, 04/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Компиляторы с cpp есть практически под все известные платформы Поэтому авторы о... весь текст скрыт [показать]
     
  • 4.34, Аноним, 20:27, 04/03/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Ага, и препроцессоры на C не нужны. Ъ-кодеры обходятся без них.
     
  • 2.41, анонимус, 07:59, 05/03/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Так Си и есть высокоуровневый ассемблер ... весь текст скрыт [показать] [показать ветку]
     
  • 1.22, Аноним, 15:29, 04/03/2018 [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Есть же Crystal Прекрасный руби-подобный синтаксис, быстрый Have a synt... весь текст скрыт [показать]
     
     
  • 2.24, Аноним, 16:12, 04/03/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    Наркомания какая-то ваш кристал, лучше уж D
     
  • 1.29, Аноним, 19:12, 04/03/2018 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    А может проще сразу писать на C/C++
     
     
  • 2.30, Аноним, 19:16, 04/03/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +3 +/
    Так они тоже транслируются Поэтому для любителей истинной простоты есть hex-ре... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.51, XYZ, 15:05, 05/03/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Так hex-код тоже транслируется в нули и единицы. А вообще проще всего взять батарейку, две иголки и сраду подавать нужное напряжение в нужных участках материнской платы.
     
  • 1.43, adolfus, 13:31, 05/03/2018 [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    "язык системного программирования" и "сборщик мусора" -- взаимноисключающие параграфы
     
     
  • 2.47, Crazy Alex, 14:29, 05/03/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    Давно нет. Разве что вы под "системным" понимаете исключительно ядро и драйверы. Впрочем, язык всё равно пришибленный.
     
  • 2.50, Аноним, 14:52, 05/03/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +2 +/
    Т е ЯП, в которых есть подключаемый сборщик мусора -- не системные http www ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.53, Анонс, 07:51, 06/03/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • –3 +/
    Чукча не видит разницу между покдлючаемым гц и по умолчанию.
     
     
  • 4.56, Аноним, 14:38, 06/03/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    Чего - по умолчанию , о великий знаток Или ты пользуешься обычными указателями... весь текст скрыт [показать]
     
  • 2.54, Аноним, 09:35, 06/03/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Как ни загляну в комменты 8212 обязательно узнаю новое слово Что означает ... весь текст скрыт [показать] [показать ветку]
     
  • 1.55, Ын, 10:34, 06/03/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    только BASIC из zx spectrum 48 самый понятный и запоминающийся
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor