История изменений
Исправление Deleted, (текущая версия) :
Я про контроль целостности.
Вы можете собрать application с хидерами от libblabla-1.0.0, а задеплоить с бинарником от libblabla-1.0.1, libblabla-1.1.0, libblabla-1.2.10...
Два разных шага: с чем собираем, и с чем линкуем в рантайме.
А мой собеседник настаивает, что нужно каждый раз пересобирать application, хотя это абсурд, противоречащий тому, как проектируется софт. Тут игнорируется фундаментальный принцип разделения интерфейса и реализации.
В идеале, nix должен разделять build environment и run-time environment и контроллировать их отдельно.
При сборке мы получаем производный артефакт «application собранный с хидерами от libblabla-1.0.0», который должен контроллироваться отдельно как от обоих исходников, так и от не связанного с ним артефакта «бинарник libblabla». Это контроль сборки.
А контроль run-time environment в свою очередь даёт гарантию, что задеплоено будет ровно то, что побитово совпадает с задуманным. А вот что именно задумано, т.е. конфигурация, - это должен решить человек.
Из-за того, что nix смешивает роли системы сборки и системы доставки, обе вещи он реализует хуже, чем мог бы.
Исправление Deleted, :
Я про контроль целостности.
Вы можете собрать application с хидерами от libblabla-1.0.0, а задеплоить с бинарником от libblabla-1.0.1, libblabla-1.1.0, libblabla-1.2.10...
Два разных шага: с чем собираем, и с чем линкуем в рантайме.
А мой собеседник настаивает, что нужно каждый раз пересобирать application, хотя это абсурд, противоречащий тому, как проектируется софт.
В идеале, nix должен разделять build environment и run-time environment и контроллировать их отдельно.
При сборке мы получаем производный артефакт «application собранный с хидерами от libblabla-1.0.0», который должен контроллироваться отдельно как от обоих исходников, так и от не связанного с ним артефакта «бинарник libblabla». Это контроль сборки.
А контроль run-time environment в свою очередь даёт гарантию, что задеплоено будет ровно то, что побитово совпадает с задуманным. А вот что именно задумано, т.е. конфигурация, - это должен решить человек.
Из-за того, что nix смешивает роли системы сборки и системы доставки, обе вещи он реализует хуже, чем мог бы.
Исправление Deleted, :
Я про контроль целостности.
Вы можете собрать application с хидерами от libblabla-1.0.0, а задеплоить с бинарником от libblabla-1.0.1, libblabla-1.1.0, libblabla-1.2.10...
Два разных шага: с чем собираем, и с чем линкуем в рантайме.
А мой собеседник настаивает, что нужно каждый раз пересобирать application, хотя это абсурд, противоречащий тому, как проектируется софт.
В идеале, nix должен разделять build environment и run-time environment и контроллировать их отдельно.
При сборке мы получаем производный артефакт «application собранный с хидерами от libblabla-1.0.0», который должен контроллироваться отдельно как от обоих исходников, так и от не связанного с ним артефакта «бинарник libblabla».
Контроль run-time environment даёт гарантию, что задеплоено будет ровно то, что побитово совпадает с задуманным. А вот что именно задумано, т.е. конфигурация, - это должен решить человек.
Из-за того, что nix смешивает роли системы сборки и системы доставки, обе вещи он реализует хуже, чем мог бы.
Исправление Deleted, :
Я про контроль целостности.
Вы можете собрать application с хидерами от libblabla-1.0.0, а задеплоить с бинарником от libblabla-1.0.1, libblabla-1.1.0, libblabla-1.2.10...
Два разных шага: с чем собираем, и с чем линкуем в рантайме.
А мой собеседник настаивает, что нужно каждый раз пересобирать application, хотя это абсурд, противоречащий тому, как проектируется софт.
При сборке мы получаем производный артефакт «application собранный с хидерами от libblabla-1.0.0», который должен контроллироваться отдельно как от обоих исходников, так и от не связанного с ним артефакта «бинарник libblabla».
В идеале, nix должен разделять build environment и run-time environment и контроллировать их отдельно.
Контроль run-time environment даёт гарантию, что задеплоено будет ровно то, что побитово совпадает с задуманным. А вот что именно задумано, т.е. конфигурация, - это должен решить человек.
Из-за того, что nix смешивает роли системы сборки и системы доставки, обе вещи он реализует хуже, чем мог бы.
Исходная версия Deleted, :
Я про контроль целостности.
Вы можете собрать application с хидерами от libblabla-1.0.0, а задеплоить с бинарником от libblabla-1.0.1, libblabla-1.1.0, libblabla-1.2.10...
Два разных шага: с чем собираем, и с чем линкуем в рантайме.
А мой собеседник настаивает, что нужно каждый раз пересобирать application, хотя это абсурд, противоречащий тому, как проектируется софт.
В идеале, nix должен разделять build environment и run-time environment и контроллировать их отдельно.
Контроль run-time environment даёт гарантию, что задеплоено будет ровно то, что побитово совпадает с задуманным. А вот что именно задумано, т.е. конфигурация, - это должен решить человек.
Из-за того, что nix смешивает роли системы сборки и системы доставки, обе вещи он реализует хуже, чем мог бы.