June 17th, 2015

Book

Пропадающая функция, или Titans of Refuctoring

TL;DR: из библиотеки, входящей в состав GHC, периодически пропадает экспорт нужной функции, не используемой GHC

Всё началось в 2012 году. Я обнаружил, что из библиотеки HOOPL пропала функция runWithFuel.

6 февраля 2012, поскольку контактов мейнтейнера не нашлось,
написал Norman Ramsey. Который то ли писал статью про HOOPL, то ли ещё как был причастен. Короче, вычислил. Он ответил "бля хуйня, кто-то выложил на хакадж и мне модифицированный код не показал, работаю над проблемой, ща починю". И всё на этом.

19 апреля 2012 я пнул его ещё раз.

21 апреля 2012 мне пришло письмо с СС на обоих саймонов и каких-то других гхц-шников, о том, что Норман выложил новую версию, где среди прочего починен мой экспорт. Но он выложил её куда-то внутрь гхц, и на хакадже по-прежнему жопа.

15 июня 2012 я вклинился в тред и спросил, чо мне ждать нового релиза гхц? Ответа не последовало, хотя тред жил. Вместо этого Марлоу тут же заметил апнутый тред и начал обсуждать какие-то другие изменения Нормана в апи библиотеки.

24 июня 2012 я заметил в обсуждении, что в недоступной мне версии, оказывается, запилили другую недостающую мне фичу, и похвалил их.

25 июня 2012 Justin Bailey заметил апнутый тред и написал "ах как хорошо что вы меня добавили в тред, я как раз юзаю Hoopl в дисере" (хотя он был в треде уже полгода как).

28 декабря 2012 кто-то попытался скомпилить HNC, и наткнулся на эту хрень. Я тут же "исправил", просто прибив в .сabal гвоздями версию 3.8.7.4, не разбираясь особо.

12 ноября 2013 я ещё раз написал Норману, что воз и ныне там. Он сказал, что не сможет починить раньше января 2014. На том и порешили.

В ченжлоге HOOPL, который я увидел только сегодня, я увидел такие записи:

3.8.7.4 - re-export of runWithFuel as per Justin Bailey (тот самый дисерщик и та самая версия!)

3.10.1.0 *Apr 2015* - Re-export runWithFuel from Compiler.Hoopl

В-общем, наконец настало щастье и в версии с Hackage в третий раз починен экспорт. А в версии, с которой собирается GHC 6.10.1, по-прежнему (снова?) поломан.

Занавес.