metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-12-28 12:50 am

Везет на странности

В libuv (сишная либа для async io, используется в node.js, rust(вроде бы) и прочем таком) для реализации poll поверх IOCP используются недокументированные функции afd.sys - фактически, реверс-инжинеренный кусок кода из winsock.dll:

https://github.com/libuv/libuv/blob/v1.x/src/win/winsock.c#L477
https://github.com/piscisaureus/epoll_windows/blob/master/src/epoll.c#L721
http://x64blog.name/1306870455

Конечно же, тесты этого дела странным образом падают на 2003 винде.
Не то, чтобы мне сильно был нужен epoll на винде, да интегрированный в event loop этой либы, но безумные решения, попадающиеся под руки каждый день, задолбали уже.

[identity profile] octagram (from livejournal.com) 2015-01-02 07:35 pm (UTC)(link)
Зато в Линуксах, по крайней мере, в Debian, всё меняется, всё устаревает очень быстро. Не давно ставил Яндекс.Сервер, последний релиз которого был в 2010м году, и .deb есть для Линукса, но вот уже что–то не срастается, файлы, которые были установлены в rc.d что–то там ломают к чертям, пока их оттуда не удалишь. Так я и не понял, как по–нормальному Яндекс.Сервер в автозагрузку поставить, и что не так с теми rc скриптами, которые в комплекте с Яндекс.Сервером. А на Windows всё работает. А сколько лет DOS приложения работали на Windows, если учесть халявный Windows XP Mode в Windows 7? В Линуксе такой фанатичной преемственности нет.

Обратная сторона такой преемственности — это геморройность обновлений, да. Каждое обновление сопровождается хитрым логическим выражением, проверяющим версии DLL, записи в реестре, подключённое железо и ещё всякое такое.

Сделать так, как в Gentoo, не получится. Это, скорее, надо функционально–реактивное программирование применить, чтобы ускорить процесс. То есть, конфигурация компьютера — это поведение (то есть, функционально–реактивное значение). Конфигурация OS — это результат функции от конфигурации компьютера. И конфигурация компьютера, и функция от этой конфигурации могут инкрементально меняться со временем, вызывая реакции, по итогам которых результат перевычисляется с минимально требуемыми перевычислениями. Я пока не вижу, чтобы ФРП добралось до пакетных менеджеров, так что имеем то, что имеем.