понедельник, 11 октября 2004 г.

Компилятор моего языка сдвинулся с мертвой точки. Первые шаги в type inference.

Несмотря на то, что вся документация по проблеме типизации жутко академическая и читать её почти невозможно....
Написание компилятора хоть чуть-чуть, но сдвинулось с мертвой точки. Теперь, помимо создания AST, производится еще и типизация. Правда там кругом stub'ы. Типизация простых выражений (констант) работает. Также работает type checker.
if 1 then 2 else 3
>>> Fatal error: exception Failure("Can't unify: expected bool, but found int")

666
>>> impl_file:
>>> 7.0 - 7.3: 4>int: VE_int: 666

1.0
>>> impl_file:
>>> 7.0 - 7.3: 4>float: VE_float: 1.000000e+00

(666)
>>> impl_file:
>>> 7.0 - 7.5: 4>int: VE_paren:
>>> 7.1 - 7.4: 4>int: VE_int: 666

Теперь нужно сделать нормальный typing environment... ужас. :[]

пятница, 24 сентября 2004 г.

apt-get dist-upgrade

А почему бы не сделать сабж, подумал я, и .. сделал! Целую неделю качалось 600метров. Делать сабж пришлось два раза - из-за того, что пока качаются пакеты из локального списка, дебьяновцы успевают понообновлять их на сайте, удалив те, которые я собирался качать. Собственно второй заход и был выполнен после обновления списка пакетов, результатом стало повторное вытягивание дополнительных 150мегобайт (порадовал пакет egoboo-data - 12мегобайт данных для игры egoboo, которой у меня уже давно нет!). И вот сегодня я стал счастливым обладателем полного списка пакетод для обновления! Самое приятное, что по ходу апргейда, apt-get вывалился всего один раз (это кстати успех, бывало и хуже) и последовательность apt-get -f install; apt-get dist-upgrade - привела apt-get в чувства и апгрейд продлился.

Для полноты ощущений я перезагрузил компьютер...

Первое, что я увидел - синий экран, на нём красная табличка в которой текст и два варианта ответа. Текст написан псевдографикой. Ну с кем не бывает. Полез смотреть changelog'и от console-tools. Хрен. Последнее обновление было сделано в 2002 году. Значит не оно. Значит kbd. После получаса возни с setfont я таки вспомнил как правильно закгружать шрифты и mapping файт. Открыл /etc/init.d/console-screen.kbd.sh, и обнаружил, что скрипт покалечен и работать не может в принципе. Исправил. Заработало. Переключившись на X'овую консоль я не нашёл там ту самую загадочную табличку, но обнаружил другую - ваши X'ы не работают, потому GDM тоже работать не будет, читайте логи и разбирайтесь. Так и сделали. В логах речь о том, что nvidia-glx не смог загрузить nvidia-kernel. Хехе. Еще бы он смог. Ядро ми имеет 2.4.21 и nvidia дрова стояли 1.0.4191. Но debian решил всё это проапргрейдить и поставил nvidia-kernel-2.4.27-1-386_1.0.6111, и соответственно nvidia-glx_1.0.6111-1_i386. Но ядро-то у меня 2.4.21, никак не 2.4.27. Ладно, качаем nvidia-kernel-source_1.0.6111, собираем пакет. Ставим и перезагружаем PC. О. Грузится GDM. Ми рулит! Наконец-то всё пункты на русском языке, а не на крокозяблах. Приятно. В связи с этим я обнаружил там пункт "Настроить GDM". Выбрал. GDM просит пароль root'a. Я ввожу. Не канает. Я опять вввожу пароль - меееедленноо. Фиг. Ладно, хрен с ним, потом настроим. Ми вводит имя пользователя, присматривается и видит, что текущая раскладка русская! Ну, млять, купился на старый прикол. Нажимаем ALT и... не помогает - расскладка не меняется! Нажимаем alt-shift, ctrl-shift, shift-shift, правые вариации предыдущих комбинаций - хрен! Тяжело вздохнув, ми лезет в /etc/X11/XF86Config-4 - но там все как будто бы OK. Перезапуск GDM ничего не даёт. Еще пол часа долбежки по toggle-button'ам ничего не дают. Кривой GDM - решаю я, убиваю его и запускаю startx напрямую из консоли. Грузится любимый ion2 и выдает белое страшное окно на весь экран, которое уведомляет меня о том, что оттранслировать клавиатурные комбинации ion2 не смог. Нажав единственно возможный Ok с помощью мыши и проверив, что ни одна комбинация клавишь не работает - ми прибивает Xы. Тяжело вздохнув лезет в /etc/X11/XF86Config-4 - да нет, как было всё так и есть. Лезет в /usr/share/doc/xfree86-common и читает changelog'и. Тоже кажется ничего про xkb не сказано. Лезет /etc/X11/xkb - до упора ищет упомнинаия toggle. Но тут тоже все OK: gtp:toggle как и раньше переключать должен по alt'у. Измотанный и уставший ми вползет в /usr/share/doc/xserver-xfree86 и видит там файлик README.XKB-Config.gz в заголовке которого красуется 25 November 2002. Фигня, кто ж нынче дату обновления правит, когда документ редактирует? Беглый взгляд попадает на раздел "2.2 Advanced Configuration", который начинается словами "Since XFree86 4.3.x you can use multi-layouts xkb configuration." (следовало бы в конце добавить еще слово ONLY). Из раздела следует, что для счастья надо писать Option "XkbLayout" "us,cz,de". Ладно, открываем конфиг X'ом и меняем Option "XkbLayout" "ru" на Option "XkbLayout" "us,ru". Загружаем GDM. Работает! Логимся под пользователем. ion2 выдает скромное сообщение о неизвестной клавише "Multi_key". ZSH (или терминал dash, хз) не понимает русский ввод. Ну разве это проблемы? После получаса попыток выяснения, как теперь же называется кнопка Multi_key, ми таки выясняет это программой xev. Меняет в конфиге ion2 Multi-key на Super_R.

Победив очередную фичу, ми решает бросить все к чертям и занятся работой, пишет в lj отчет и рассылает ссылку знакомым линухойдам-дебьяновцам.

среда, 15 сентября 2004 г.

Кругом пароли

И так по 20 раз в день. Пора пить ноотропил.

XXX@aa.bb.cc.ru:~% su
Password:
su: Authentication failure
Sorry.
XXX@aa.bb.cc.ru:~% su
Password:
su: Authentication failure
Sorry.
XXX@aa.bb.cc.ru:~% su
Password:
su: Authentication failure
Sorry.
XXX@aa.bb.cc.ru:~% su
Password:
su: Authentication failure
Sorry.
XXX@aa.bb.cc.ru:~% su
Password:
su: Authentication failure
Sorry.
XXX@aa.bb.cc.ru:~% su
Password:
su: Authentication failure
Sorry.