[personal profile] dmitry_vk

Собрал виндовый инсталлятор SBCL 1.0.42 (раньше использовал 1.0.40) с поддержкой нитей.

https://sites.google.com/site/dmitryvksite/sbcl-distr/sbcl-1.0.42-threads.msi

Date: 2010-10-06 10:04 pm (UTC)
From: [identity profile] avodonosov.blogspot.com (from livejournal.com)
Есть еще какой-то вроде баг в IO.

(with-open-file (f "/tmp/log.txt"
:direction :output
:if-exists :append
:if-does-not-exist :create)
(format f "test message: ~A~%" "hello"))

Эта форма почему-то не добавляет текст к файлу, а просто переписывает файл. Т.е. несмотря на :if-exists :append, работает как будто :if-exists :overwrite.

А вообще, это классно иметь многопоточный SBCL. Я это сейчас случайно прочувствовал.

Проверить кое-что нужно было. Я slime запустил, даже не помнил какой у меня лисп выбран для slime.

Заметил, что после запуска hunchentoot, slime не висит. Сразу не понял, что к чему (я не помнил что у меня многопоточная версия). Сижу, как белый человек дальше работаю, и в бэкграунде мысль: "странно, как это получается..., вроде висеть должно".

Date: 2010-10-07 12:45 am (UTC)
From: [identity profile] akovalenko.livejournal.com
Пофиксил append в своей ветке:
http://github.com/akovalenko/sbcl-win32-threads/commit/76312ab3b6a6db68e21553da0b5fbeb01a3d43ec

Date: 2010-10-07 05:05 pm (UTC)
From: [identity profile] dmitry-vk.livejournal.com
Хм, а как это работает?

Date: 2010-10-08 02:37 am (UTC)
From: [identity profile] akovalenko.livejournal.com
У windows ничего похожего на O_APPEND на уровне winapi нет, зато оно есть на уровне CRT: если _open() был с _O_APPEND, write() перед вызовом ReadFile перейдет в конец файла. Флаг сохраняется где-то внутри таблицы CRT-шных дескрипторов.

Вот я и вызываю _write() для тех дескрипторов, которые соответствуют позиционируемым файлам (seekable): пусть он своё знание применит.

Для лиспового :append, конечно, достаточно было бы переходить в конец файла один раз, при его открытии; но на юниксах сложилась традиция, что :append превращается в O_APPEND (строго говоря, анти-стандартная традиция, потому что нельзя открыть с :append, пописать в конец, а затем установить FILE-POSITION в середину и записать что-нибудь туда; с другой стороны, юниксовый O_APPEND тоже полезная вещь: например, когда несколько процессов пишут, один не может вклиниться между переходом-в-конец и записью другого).

Date: 2010-10-07 01:29 am (UTC)
From: [identity profile] akovalenko.livejournal.com
P.S. На всякий случай выкладываю свой бинарник (это "HEAD" от dmitry-vk плюс фикс :append и некоторые несущественные мелочи).
http://sw4me.com/private/sbcl-1.0.43.13.msi

Date: 2010-10-07 10:01 am (UTC)
From: [identity profile] avodonosov.blogspot.com (from livejournal.com)
Спасбо за бинарник

Profile

dmitry_vk

April 2023

S M T W T F S
      1
234567 8
9101112131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 5th, 2026 09:54 pm
Powered by Dreamwidth Studios