Чтобы добавлять сообщения и комментарии, .

@Renha:
Renha

STM32 CubeMX — офигенно крутое ПО, генерит проекты для используемого мной EWARM.

Однако, собака такая, неправильно — добавляет в сборку один лишний файл и не добавляет один нужный. Причём это не исправляется просто так, в итоге самое быстрое решение — после генерации перенести содержимое нужного файла в ненужный, благо название не роялит.

Хотел в STM зарепортить это, зашёл в онлайн саппорт, а оно мне такое:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.

@ndtimofeev:
ndtimofeev

Внезапно осознал что не могу придумать красивую STM-транзакцию вычитывающую содержимое TChan'а до тех пор пока не вычитается нужное значение. Всё время упираюсь в то что в случае retry'а придётся перечитывать все значения заново. Пока думаю что лучше: забить болт или завести разные TChan'ы для разных подмножеств событий.

@qnikst:
qnikst

поубивать бы того, человека который в network-transport-inmemory начал все делать не на STM :(

@ndtimofeev:
ndtimofeev

Насколько я понял, тред проваливший транзакцию выпадает из очереди до тех пор пока кто-то не перезапишет какую-то из переменных которые он в транзакции читает. Я правильно понимаю, что если определить MVar как newtype MVar a = MVar (TVar (Maybe a)) никаких преимуществ у встроенного MVar'а не будет?

@qnikst:
qnikst

А есть ли возможность в stm сказать, rollback n; т.е. не применять никакие изменения и вернуть чистое значение n?

@qnikst:
qnikst

как называется то свойство, что процессы лочащиеся на mvar получат его в том порядке, в котором они лочились? stm при том, что там оно не выполняется.

@xorkrus:
xorkrus

STM8 — это нечто мифическое. Информации в сотню раз меньше чем о STM32 и прочем.
Поиск на хабре — практически нуль. Поиск в жж — столетней давности посты.
Ну что за бред?

@qnikst:
qnikst

а я не заметил когда TBChan окончательно в stm из stm-chans переехал, а ещё появились WeakTVar, а ещё newBroadCastTChan, в общем много годноты

@Krin-San:
Krin-San

Свершилось! Рабочий способ сбора данных с GPIO через DMA для камней STM32F1* от ST:
st.com

Долгим гуглением я пришёл примерно к этому же решению, НО зыбал убрать оптимизацию для буфера данных — в итоге у меня по UART приходила какая-то каша, где только первый байт был правильным ._.
Подошёл бы и volatile, но тут наткнулся на префикс _IO.

@segfault:
segfault

Есть джва потока, первый слушает сообщения из сокета, у воторого структурка с которой он в цикле выполняет вычисления (сама структура не меняется, данные из нее используются для вычислений). Нужно организовать атомарное обновление этой структуры из первого потока (асинхронно, при приходе сообщения), так, чтобы не мешать второму потоку с ней работать. В хаскеле идеально решилось бы с STM.
Как ?

@segfault:
segfault

Можно ли заблокировать STM переменную от изменения на время, типа modifyTVar только в IO ?

@dr-Chaos:
dr-Chaos

Господа, я вот попытался собрать github.com hackage.haskell.org . Оно начало ругаться на unGetChan ( hackage.haskell.org ) . Если просто переименовать Chan в TChan , а вызовы типа readChan в atomically $ readTChan . Оно ж должно работать?

@qnikst:
qnikst

а ни кто не подскажет как можно на stm сделать точку рандеву, т.е. чтобы 2 потока гарантировано обменялись данными
composability не нужно, т.к. оно не сильно реально в этом варианте. (Возможно это и просто я просто пока не начинал думать, просто
в статьях SPJ было описано, что данный шаблон в STM нормально не реализуется)

@qnikst:
qnikst

а какие вы знаете хорошие способы делать безопасные STM транзакции, где нужно ещё и выполнить IO.
т.е. 1). stm проверка наличия объекта 2). io действие создающее объект 3). коммит в STM?

@qnikst:
qnikst

есть какие-нибудь примеры правильного совмещения STM с IO, т.е. когда с полученными данными из STM нужно ещё делать какие-нибудь действия в IO, кроме haskell.org

@qnikst:
qnikst

кстати интересный вопрос про STM. насколько "горизонтально расширяемо" STM том в смысле если у меня есть N независимых секций (тредов взаимодействующих только друг с другом), то будет ли замедляться вся система в целом.

@qnikst:
qnikst

а stm то не слишком большой overhead добавляет; так обычные bounded closable каналы в stm работают быстрее, чем io closable bounded queue, в котором 2 QSem и 1 лок.
а обычные каналы в IO ущербны по стравнению с STM чуть более, чем полностью. Для того, чтобы пользоваться ими в той же задаче или нужно предположить, что они
никогда не будут закрываться (что в общем-то уместно во многих задачах, но это криво), или оборачивать QSem-ами, что тоже сделает их менее производительными. Такие дела