1. Проектирование с помощью типов: Введение
Перевод цикла Скотта Влащина о том, как типы помогают проектировать программы. Первая глава, она же введение, посвящена тому, как делать дизайн прозрачнее и при этом улучшить корректность.
программист
Перевод цикла Скотта Влащина о том, как типы помогают проектировать программы. Первая глава, она же введение, посвящена тому, как делать дизайн прозрачнее и при этом улучшить корректность.
Завершён перевод книги Люка Бруно «Nix в пилюлях».
Для удобства читателей, собрал ссылки на все двадцать глав в одной публикации — здесь.
Финальная глава! Люка Бруно рассказывает о секретном оружии Nix — хуках. Их используют, когда больше ничего не помогает, в частности, для кросс-компиляции.
Эта глава посвящена деривации stdenv
, благодаря которой собирается большинство пакетов из репозитория nixpkgs
. Она поддерживает инструментарий GCC, GNU make, autotools и другие распространённые системы сборки.
Для того, чтобы различать пакеты разных версий, Nix хранит их в каталогах с именами, которые содержат хеш. В главе 18 мы разберёмся, как вычисляется этот хеш для файлов, каталогов и tar-архивов.
Знакомимся с интересным трюком, который позволяет функциональному языку Nix делать то, то, что в императивных пакетных менеджерах делается с пол-пинка.
У них там, правда, dependency hell, а в Nix всё чинно и благородно.
Вы начинаете сборку вашего пакета не на пустом месте. Репозиторий nixpkgs
, куда входит ваш пакет, при запуске скрипта сборки передаёт ему параметры. В этой главе мы поговорим о двух основных параметрах: system
и config
.
В Nix для поиска дериваций используется переменная окружения NIX_PATH
. Она похожа на PATH
, но есть и важные отличия. Разбираемся с тем, как устроен репозиторий nixpkgs
.
Продолжаем изучать паттерны проектирования, используемые при создании пакетов в Nix. В этой пилюле разберёмся с паттерном override
(переопределение).
Разбираемся, как работает второй из базовых паттернов Nix — callPackage
. Автоматизируем передачу параметров, сокращаем код репозитория.
Разбираемся в тонкостях разработки пакетов. Изучаем паттерны, которые применяются при создании пакетов и репозиториев в Nix.
Несколько месяцев назад я писал, как мы ввязались в авантюру — решили собрать в России программистов со всего мира. Не всех, конечно, а тех, кто занимается пакетным менеджером Nix и операционной системой NixOS.
Разработчики Nix когда-то решили, что делать большой проект без личного общения им не нравится, поэтому раз или два в год они собираются где-то на земном шаре и пишут код вместе. Такие встречи называются спринты. Февральский спринт прошёл в Таиланде, а летом мы провели его в Казани.
Под катом — история о том, что у нас получилось, а что — нет.
Исследуем пакетный менеджер Nix и операционную систему NixOS.
В этой статье разбираемся со сборщиком мусора.
Цикл из одиннадцати статей Скотта Влащина, посвящённый вычислительным выражениям (computation expressions) в F#.
Скотт Влащин завершает рассказ о вычислительных выражениях в F#.
Сегодня поговорим про методы класса-построителя, с которыми мы ещё не сталкивались.
Скотт Влащин продолжает рассказ о вычислительных выражениях в F#.
Сегодня мы узнаем, как создавать ленивые вычислительные выражения.
Исследуем пакетный менеджер Nix и операционную систему NixOS.
В этой статье разбираемся с тем, как работает утилита nix-shell
.
Скотт Влащин продолжает рассказ о вычислительных выражениях в F#.
Отклонимся от основной темы и поговорим, как в вычислительных выражениях можно использовать перегрузку функций.
Исследуем пакетный менеджер Nix и операционную систему NixOS.
Ранее мы разработали универсальный скрипт сборки для проектов autotools.
Сегодня мы обратимся к программе GNU hello, чтобы исследовать зависимости времени сборки и времени выполнения.
Продолжаем знакомство с Nix и NixOS. В прошлых статьях мы научились собирать пакеты Nix (деривации), а теперь попробуем написать универсальный скрипт сборки, который можно было бы использовать для сборки множества пакетов.
Люка Бруно продолжает свой захватывающий рассказ.