LINUX.ORG.RU

Релиз Nim 1.2.0

 , ,


0

5

Вышла новая версия системного языка программирования 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

Проверено: maxcom ()

Интересно, когда они перестанут ломать совместимость в минорщине?

shkolnick-kun ★★★★ ()

Почему у него синтаксис хуже, чем у Раста? Почему он не без сборщика мусора?

FilosofeM ★★ ()

Версия 1.0 отмечается стабильной базой, которая может быть уверенно использована в ближайшие годы. Начиная с текущего релиза, любой код, написанный на Nim, не будет сломан.

commagray ★★★★★ ()
Ответ на: комментарий от FilosofeM

В смысле хуже? У него же Питон синтаксис, а он самый простой

menangen ★★★★★ ()

Генерируемый JS-код использует только пробелы вместо мешанины из пробелов и табов.

Системное программирование

Лол.

DELIRIUM ☆☆☆☆☆ ()

системного языка программирования

а порусски?

Deleted ()

Одобряю. Только надеюсь они найдут время реализовать нормальные сообщения об ошибках компиляции. Текущие - это привет из 80-х.

RazrFalcon ★★★★★ ()

кто-то пишешь на нём в vim? плагины ломают раз в неделю, как нормально сделать табы пробелами и автоотступы?

luntik2012 ()

ещё бы документацию, которая бы описывала всякие фишки типа align-ов и вообще все функции языка. nim in action стоит как почка (благо на рутрекере есть), описывает полтора варианта использования и устарела, нормальной документации нет (nim tutorial и nim manual описывают чуть меньше, чем ничего).

до уровня литературы по плюсам типа пола и харви дейтела - как раком до китая

luntik2012 ()
Последнее исправление: luntik2012 (всего исправлений: 1)
Ответ на: комментарий от menangen

Питон синтаксис

Ну так да. Хуже. Этот недоязык плох с любой точки зрения

silver-bullet-bfg ★★ ()

системного языка программирования

сборщик мусора

Остановите Землю, я сойду. Не, лучше дайте мне огнемёт с бесконечными патронами.

dimgel ★★★ ()
Последнее исправление: dimgel (всего исправлений: 1)
Ответ на: комментарий от FilosofeM

Потому что его создавали как и Go, чтобы любой дегенерат мог бы писать код производительный. Google сделали, но синтаксис сложен для части людей.

Создатель nim пошёл дальше. Сделал язык с таким синтаксисом, который может освоить любая табуретка.

Очень печально. Индустрия вырождается.

silver-bullet-bfg ★★ ()
Ответ на: комментарий от silver-bullet-bfg

Гм, как раз го делали для табуреток, а в ниме и система макросов и прочее метапрограммирование.

PolarFox ★★★★★ ()
Ответ на: комментарий от PolarFox

Таки его применяют как пидон в основном. Возможность != Применение. Иначе бы lisp’ы были самыми популярными много лет как

silver-bullet-bfg ★★ ()

Ну-с, @liksys, что Вы скажете насчёт этого примитивного транслятора — C с синтаксисом Python?

mertvoprog ()
Ответ на: комментарий от silver-bullet-bfg

Вот только Go успешно используется в продакшне, а на Nim какие-то маргиналы пишут, как и на D, Pascal, Vala, Lisp и прочих мёртворождённых недоязычках. А всё почему? потому что за ними не стоят корпорации!

mertvoprog ()
Ответ на: комментарий от mertvoprog

Но ведь за Lisp стоит целый Microsoft, которым был выпущен интерпретатор «Microsoft Lisp»!

stasolog ()
Ответ на: комментарий от mertvoprog

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

P.S. как и из кода десктопного клиента telegram, кстати

luntik2012 ()
Последнее исправление: luntik2012 (всего исправлений: 1)
Ответ на: комментарий от silver-bullet-bfg

Создатель nim пошёл дальше. Сделал язык с таким синтаксисом, который может освоить любая табуретка.

вряд ли это так, но даже если так, то что в этом плохого? или ты сторонник намеренного усложнения синтаксиса, чтобы языком могли пользоваться только зубрилки?

anonymous ()

Интересно, а веб-приложения для браузеров на нем пишут?

AVL2 ★★★★★ ()
Ответ на: комментарий от AVL2

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

luntik2012 ()

Реальные пацаны выбирают OCaml!11

anonymous ()

по поводу того, что если язык с простым синтаксисом, то значит «для дебилов», процитирую:

«C++ - довольно таки примитивное, но монстровое поделие, полное исторически сложившихся нелепых нагромождений. Человек, который хорошо в нем ориентируется - это хорошее зубрилко а не хороший программист. Умение героически преодолевать трудности, которые создает твой собственный инструмент, вместо того, чтобы решать непосредственно прикладную задачу, в современно мире ценится разве что только среди прыщавых сосок. Работодатель же это сомнительное умение не ценит, и совершенно справедливо.» (ц) лугоффский

anonymous ()

«Системный язык программирования» и GC как-то не вяжутся вместе. А вот как замену тормознутому питону вполне видится.

WatchCat ★★★★★ ()
Ответ на: комментарий от WatchCat

У nim мультипарадигменное управление памятью. Есть 4 опции:

  • «обычный» сборщик мусора — по умолчанию
  • ручное, как в C, вообще выключить автоматическое освобождение — не рекомендуется
  • –newruntime, когда при деаллокации проверяется, что нет ссылок, ведущих на данный объект (для этого используется подсчёт ссылок), а сама деаллокация осуществляется с помощью ключевых слов-подсказок компилятору о владении, наподобие Rust
  • подсчёт ссылок, –gc:arc, atomic reference count, который и был введён в этой версии. В отличие от «обычного» сборщика мусора обладает детерминистичностью и низким потреблением памяти, но если в объектах есть циклы, надо вручную разрешать.
anonymous ()
Ответ на: комментарий от anonymous

Ты первый кто назвал Оберон системным. Впрочем для анонимуса это не удивительно. Сейчас ты конечно заявишь что на Обероне была написана операционная система (ага, ровно одна). На что я тебе скажу, что на Яве пишут прошивки для микроконтроллеров, но никто же Яву системным языком не называет.

WatchCat ★★★★★ ()
Ответ на: комментарий от shkolnick-kun

Школьник, что тебе на сишке нормально не сиделось то?

anonymous ()
Ответ на: комментарий от mertvoprog

Вот только Go успешно используется в продакшне, а на Nim какие-то маргиналы пишут

Nim как раз попытка хипстоты втащить в python технологии, которые «используют маргиналы». Смешно, lisp появился 50+ лет назад, а его идеи до сих пор актуальны и из него черпают over9000 языков принципы и паттерны. VB тоже успешно используется в продакшене, JavaScript тоже. Но ни VB, ни JS я не могу назвать хорошими языками, хотя на первом работал в течении всего обучения в универе, а на втором последние 5 лет. Go сделан по словам самого же Пайка, чтобы любая табуретка могла писать. Это не показатель того, что инструмент хороший. Это показатель того, что отрасль деградирует в угоду бизнесу.

как и на D

Расскажи об этом Remedy.

Pascal

Расскажи об этом всем пользователям Delphi, FPC

Vala

Расскажи об это Gnome сообществу

Lisp и прочих мёртворождённых недоязычках.

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

А всё почему?

Потому, что раньше шли в профессию фанатики, которые «болели» отраслью. А сейчас хипсторы, которым нужен смузи и бабло при минимуми напряга.

потому что за ними не стоят корпорации!

Корпорациям дешевле держать 10 макак, нежели 2-3 вменяемых инженеров. MVP для современного рынка достаточно, чтобы продавать. Посмотри на gamedev, где нормально выпускать за тонны нефти альфу и обещать когда-нибудь допилить.

silver-bullet-bfg ★★ ()
Ответ на: комментарий от anonymous

вряд ли это так, но даже если так, то что в этом плохого?

Потому, что табуретка ничего не может освоить сложнее. И не будет развиваться. Она будет клепать нечто в рамках одной технологии, не думая о производительности, поддержке, качестве. Пример близкий - djang’исты, программистов хуже которых я не встречал (может быть мне, конечно, такие попадались). Они не способны в большей части своей сделать банальные оптимизации, т.к. они не православны с точки зрения django.

или ты сторонник намеренного усложнения синтаксиса, чтобы языком могли пользоваться только зубрилки?

Зубрилки и люди способные думать - разные понятия. Не надо смешивать. Если человек не способен понять более одного способа решить задачу - ему нечего делать в профессии и его работа орать «свободная касса». С чувством. С расстановкой.

silver-bullet-bfg ★★ ()
Ответ на: комментарий от anonymous

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

silver-bullet-bfg ★★ ()
Ответ на: комментарий от silver-bullet-bfg

Потому, что раньше шли в профессию фанатики, которые «болели» отраслью.

Все ит как оно есть, сделали инженеры из AT&T, Sun, IBM, Microsoft и т.д.

Фанатики не сделали НИЧЕГО, даже линукс пишут инженеры на деньги корпораций.

Uncle_Bobby ()
Ответ на: комментарий от anonymous

(ц) лугоффский

Иди ты в жопу со своим Луговским. Очевидно чел не понимает, что такое стандарт, сертифицированные компиляторы и никогда не работал в промышленной разработке.

Uncle_Bobby ()
Ответ на: комментарий от DELIRIUM

Что «лол», браузер - самая модная платформа ныне. JS, соответственно, самый актуальный ассемблер.

anonymous ()
Ответ на: комментарий от anonymous

Мне нужен генератор Си.

Nim - с моей точки зрения наиболее адекватный кандидат из имеющихся, из конкурентов у него разве что Pony.

Есть еще IEC 61131-3, но эти языки чисто прикладные, рантайм на них не сделаешь.

shkolnick-kun ★★★★ ()
Последнее исправление: shkolnick-kun (всего исправлений: 1)
Ответ на: комментарий от luntik2012

Из кода Метапрога тоже многое можно почерпнуть тем, кто не знакомы с визуальным программированием.

mertvoprog ()
Ответ на: комментарий от mertvoprog

А всё почему? потому что за ними не стоят корпорации!

Если «корпоративное программирование» рассматривать как «генетическое программирование»…

То для корпораций выгодно упрощать-унифицировать «язык программирования», унифицировать индусов-програмистов для «мутации» кода, «скрещивания» производимые непрерывными интеграторами и тд и тп.

Так что, скоро все корпоративное программирование придет к тупым как пробка брейнфаку или к головохвостатому лиспу или что-то подобное. Интересно, что получится, когда упростят git для «скрещивания» кода.

anonymous ()
Ответ на: комментарий от silver-bullet-bfg

втащить в python технологии, которые «используют маргиналы»

От клонирования мейнстримного Python язык не становится менее маргинальным.

Это не показатель того, что инструмент хороший. Это показатель того, что отрасль деградирует в угоду бизнесу.

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

Расскажи об этом всем пользователям Delphi, FPC

Вымирают. В 00-х дельфи ещё держались где-то на задворках мейнстрима, сейчас уже всё.

Gnome сообществу

Маргиналы по сути своей. По этой же причине маргинален Rust, несмотря на широкую любовь среди разработчиков: в теории язык хорош, а на практике почти нигде вне Mozilla не используется: единичные сведения проскакивают, что где-то что-то на нём переписали, вакансий и вовсе днём с огнём не сыщешь.

Потому, что раньше шли в профессию фанатики, которые «болели» отраслью. А сейчас хипсторы, которым нужен смузи и бабло при минимуми напряга.

Это не от хорошей жизни: востребованность в программистах выросла на порядки. Фанатиков в принципе в таком количестве никогда не было.

писал под эльбрусов

Ну хоть этим-то не смешите. Впрочем, конкретно в РФ, если тенденция на импортозамещение будет продолжаться, разработка под Эльбрусы таки может взлететь — как 1С…

Корпорациям дешевле держать 10 макак, нежели 2-3 вменяемых инженеров

Вменяемые инженеры скоро бомжевать пойдут или на рынок, как после развала СССР. По причине своей ненужности.

mertvoprog ()
Ответ на: комментарий от anonymous

придет к тупым как пробка брейнфаку или к головохвостатому лиспу или что-то подобное

Отнюдь, подобные языки слишком низкоуровневые. Тенденция на противоположное: языки, простые не своими «кирпичиками», а абстракциями. При этом кирпичики могут быть вполне себе мозголомными, взять хоть вышеупомянутый JS — но это маловажно, ведь макак можно выдрессировать это мозголомство обходить и фокусироваться на высокоуровневых абстракциях.

mertvoprog ()
Ответ на: комментарий от mertvoprog

простые не своими «кирпичиками», а абстракциями

Какая разница между крипичом и абстракцией, если оба - некие абстракции?

При этом кирпичики могут быть вполне себе мозголомными

Для зубрилы не важно, что имел виду Пушкин в своей поэме - какие там мозголомные романтические абстракции 19-го века.

anonymous ()
Ответ на: комментарий от anonymous

Для зубрилы не важно, что имел виду Пушкин в своей поэме - какие там мозголомные романтические абстракции 19-го века

Нет у Пушкина никаких абстракций, это был народный поэт.

Uncle_Bobby ()
Ответ на: комментарий от Uncle_Bobby

Нет у Пушкина никаких абстракций, это был народный поэт.

«Народный поэт», когда основная масса народа не умела читать и писать. Интересные «абстракции» разных эпох. Насколько я знаю, Пушкина народ полюбил только в советское время. А при царе не очень любили декабристкие революционные настроения.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.