LINUX.ORG.RU

Обновился пакетный менеджер Nimble для языка программирования Nim

 , ,


0

6

Первый релиз в 2018 году. Значительным новшеством стало поддержка в одном репозитории нескольких пакетов. Теперь можно указать ?subdir=<dir> в конце вашего репозитория и Nimble будет знать что смотреть в директории для вашего пакета.

Список изменений:

  • появилась поддержка нескольких пекетов в одном репозитории
  • улучшили сообщение об ошибке, когда пользователь имеет устаревшую версию библиотеки, что смущает nimble
  • появилась команад check для проверки пакетов
  • Nimble больше не игнорирует молча ошибочное «@» например nimble install compiler@
  • исправлены задачи с командой nimble path
  • команда nimble publish была улучшена и стабилизирована
  • улучшены сообщения для NIM_LIB_PREFIX
  • before install теперь вызывается когда пакеты устанавливаются по имени
  • исправлены задачи с nimble init
  • Nimble теперь отклоняет зарезервированные имена в Windows
  • поддерживается переменная среды NIMBLE_DIR в дополнение к флагу командной строке и настройке конфигурации
  • команда init значительно улучшена

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



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

В жабе, например, пакеты есть. Но там это больше «продвинутые модули». В дельфях были пакеты как коллекция модулей (нечто вроде библиотек *.a, но более высокоуровневые).

EternalNewbie
()

После новости о Nix, это выглядит уморительно.

kshmr
()

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

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

В Go и Rust - это просто сорцы.

Немного не понял. К примеру в GO я использую dep ( это менеджер зависимостей ) и это ни каким боком не может относится к пакетам. Я еще раз повторяю - к премеру пакеты wheel ( от пистона ) я понимаю что это такое. Но что такое пакет в компилируемом языке мне совершенно не понятно.

P.S. Видать здесь это какие то - не просто сырцы, хз что это тогда :(

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

Сорцы + скрипты для компиляции сорцов + скрипты для того, чтобы прилинковать либу к проекту. Если в Wheel пакеты делают что-то помимо этого, то я даже заинтригован.

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

wheel это питон это интерпретатор. Т.е. пакеты там это готовые проги работающи по фигу где лишь бы там нужный питон.

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

Не знаю что там в Go dep, но в cargo - это архив *.crate. Который содержит сорцы + всё, что захотел автор.

RazrFalcon ★★★★★
()

в конце вашего репозитория

Nimble будет знать что смотреть в директории для вашего пакета

поддержка нескольких пекетов

смущает nimble

появилась команад

OK

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

В Nim это тоже сорцы. Если требуются отдельные шаги чтобы собрать пакет, это тоже пишется на Nim.

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

В языке Crystal «пакеты» - это просто зависимости нужных версий, скачиваемые автоматом из github'а того же в подкаталожек libs, откуда эти сырцы потом инклюдятся в основной код.

Проще говоря, в компилируемых языках «пакеты» - это библиотечный код, который компилируется вместе с кодом приложения. В языках Си/Си++ так не принято, потому что там нормальным считается совершенно другой подход - динамическая компоновка. Но современные компилируемые языки считают динамическую компоновку «сложной» и пропагандируют разбухающие со временем и тяжко компилирующиеся бинарники. Зато шибко думать не надо: проект все необходимые библиотеки таскает с собой.

DRVTiny ★★★★★
()
Последнее исправление: DRVTiny (всего исправлений: 2)

Всё это было бы здорово, если бы сам Ним был бы нужен и полезен. Пока я не вижу никаких существенных преимуществ перед D или Go, ни в простоте, ни в числе библиотек и понятности.

Vudod ★★★★★
()
Ответ на: комментарий от no-such-file

В любом дистре линя пакеты это бины. Wheel в питоне это по сути тоже бины. ( готовые Либы и и т.д. )

А тут оказывается пакеты это исходники ... Хм.

mx__ ★★★★★
()

Кто-нибудь из здешних пишет на этом самом Nim'е?
Несколько лет про него ничего не слышал. Каково сейчас состояние его экосистемы? Есть ли какие-нибудь интересные проекты на нем? Вышел ли за пределы круга энтузиастов?
До сих пор не могу для себя однозначно решить, что это за зверь такой: с одной стороны, куча интересных фишек (даже compiler-macro запилили), но с другой, язык создает отталкивающее впечатление помеси питона с паскалем.

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

Нет, не вышел. Круг растёт потихоньку, конечно. Книжку выпустили толстенькую в издательстве Manning. Иногда приходят некоторые и говорят: «Фууу, Паскааааль...» и уходят.

У нас на работе один такой (пишем на современном Delphi): «Delphi отстой, глаза болят от кода». И говнокодит башни по 5 отступов и говнокодит...

uuwaan ★★
()

Обновилось ненужно для ненужно.
Вообще с такими евангелистами, как Андрей Платов, и врагов не нужно.

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

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

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

В языках Си/Си++ так не принято, потому что там нормальным считается совершенно другой подход - динамическая компоновка. Но современные компилируемые языки считают динамическую компоновку «сложной» и пропагандируют разбухающие со временем и тяжко компилирующиеся бинарники. Зато шибко думать не надо: проект все необходимые библиотеки таскает с собой.

Язык Си является тканью из которых состоят UNIX подобные OS. glibc & gcc & kernel & утилиты gnu — это одна свяязка. Бинарники можно смело связывать динамически потому-что программист на 100%, что в родной системе всегда будут родные т.е. сишные либы. Современные компилируемые языки просто напросто вынуждены таскать всю экосистему за собой.

Паскаль, Питон, Жаба, Раст для юниксов это чужеродная ткань. И да, С и С++ это два совершенно разных языка.

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

В языках Си/Си++ так не принято, потому что там нормальным считается совершенно другой подход - динамическая компоновка.

Там поддерживается и то, и другое. Разработчики выбирают ту форму компоновки, которая им удобна. Кроме того, емнип, существуют (существовали) платформы, на которых динамической компоновки не было в принципе, там все линковалось статически.

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

Ну у Паскаля есть проблемы с краткостью изложения

Примеры из книжки дяди Боба «Чистый Код» выглядели бы намного выразительнее, если бы «до» и «после» были написаны на Delphi, а не Java. Отрефакторенный код читается нормально.

поддержкою в языке многих современных сущностей типа словарей или функций первого порядка

Есть дженерики, класс TDictionary для словарей, есть замыкания – из функции можно вернуть функцию.

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

Во первых я мало знаком с Gentoo.

Во вторых у них тоже есть бины.

В третьех портаже это система портов где в самих портах лежат скрипты для сборки и патчи на сырцы. Сырцы вроде там обычные ...

Последний раз юзал генту вроде лет 15 назад, пишу по памяти и может что то уже изменилось.

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

D мёртв же.

Он не мертв, он просто мало кому нужен. А так развивается, даже вроде как стабильность и забой о совместимости какой-то последние годы от него веет, чего раньше не бывало.

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

В любом дистре линя пакеты это бины

ЛОЛ ЧТО? Содержимое пакета ничем не ограничено. В т.ч. для того же питона пакеты содержат исходники.

no-such-file ★★★★★
()

вместо портажа можно юзать?

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

Сказать-то что хотел?

В любом дистре линя пакеты это бины.

Это лютое 4.2. О чём и речь.

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

Я согласен в целом, но ситуация всё равно далека от идеальной. Синтаксис не самый простой, хотя не хуже Явы — это точно. Я использую Lazarus/FreePascal и могу судить только по ним, чего там в Delphi наворотили, я после 7 версии не ведаю. То, что можно передать объект процедурного типа, это понятно. Также я могу эмулировать словари. Но в том же Питоне для этого нужно гораздо меньше действий.

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

В случае компилятора это текст программы в текстовом файле.

Вы бы лучше объяснили на примере ГО или Си что там может быть пакетом...

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

Есть такая штука: flatpack. Она предоставляет «пакеты» с прогами. Она пакет или нет?

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

на современном Delphi

Звучит как оксюморон.

говорят: «Фууу, Паскааааль...» и уходят

Ну и не удивительно. Обещают современный выразительный и элегантный язык, но заходишь на сайт, и там с порога встречает императивная лапша на каком-то питоне. Непонятно только, зачем там var и почему не просто stdin.lines.map(len).average() Листаешь примеры - старый добрый паскаль с {. прагмами .} на каждый чих, но почему-то косящий под питон. Понятное дело, что это совсем не то, что ожидают увидеть.

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

stdin.lines.map(len).average()

Несмотря на то, что мне нравится Ruby идеальной читабельностью, но вот такие хрени типа приведённой выше - это полный отстой, и очень жаль, что в crystal тоже оно.

Если уж вы что-то слышали о функциональщине, то знаете, что правильная запись такая:

(average (map (len) (lines stdin)))

Ну или хотя бы такая:

average(map(->(len), lines(stdin)))

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

S-выражения - это ключ к пониманию того, что важен результат, а не процесс, нужно начинать с задачи «построить дом», а не с изучения свойств древесины все возможных пород. В данном случае результатом является среднее элементов списка (а потом уж уточним какого, а может и передумаем брать именно такой список), а не это ваше stdin.хрен.знает.что

И да, Perl куда ближе к функциональным языкам, чем блевотный питон. Я уж не говорю о Julia и R, которые под капотом и есть функциональные языки.

DRVTiny ★★★★★
()
Последнее исправление: DRVTiny (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Если говорить более строго то Python - язык программирования. Основной платформой на которую транслируется код на языке Python - это Python Virtual Machine (интерпретация). При большом желании можно и скомпилировать на amd64.

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

правильная запись такая

Nim так не может.

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