OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Среда, 15 Май, 2024 16:07

Часовой пояс: UTC + 3 часа


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему  [ Сообщений: 649 ]  На страницу Пред.  1 ... 26, 27, 28, 29, 30, 31, 32, 33  След.
Автор Сообщение
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 07:04 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1174
Sergej Durmanov писал(а):
Что касается функций обратной записи, если кто-то дергает процедуру в а2, то очевидно это какой-то сторонний процесс, а не активность а2.
то есть, в колбэках запрещено делать NEW?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 10:53 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1566
Sergej Durmanov писал(а):
budden писал(а):
Вероятно, я не совсем тут компетентен. Но правильно я понимаю, что там должна генерироваться какая-то обёртка, которая отмечает, что этот кадр является корнем сборки мусора, а по завершении выполнения - что он перестаёт являться таким корнем? И плюс к тому нужно учесть ситуацию, когда возникает исключение (т.е. по идее он должен перехватывать все исключения и делать соответствующую раскрутку).

Нет никаких оберток, нет тегов стеке, есть метаданные о всех сущностях а2, хранящиеся отдельно.
При обработке исключения, произошедшего в процедуре а2, именно метаданные позволяют распечатать информацию о содержимом кадра.
Кроме того, в а2 используются барьеры записи для пометки указателей.
Что касается функций обратной записи, если кто-то дергает процедуру в а2, то очевидно это какой-то сторонний процесс, а не активность а2.

Не верю, но разобраться некогда.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 10:55 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1566
arisu писал(а):
Sergej Durmanov писал(а):
Что касается функций обратной записи, если кто-то дергает процедуру в а2, то очевидно это какой-то сторонний процесс, а не активность а2.
то есть, в колбэках запрещено делать NEW?


Там дело даже не в том. Если ф.обратного вызова выполняется, на стеке могут быть указатели, ссылающиеся на объекты на куче. Если не вести учёт выполнений всех функций, то будут висячие указатели. Т.е. даже не нужно делать NEW, достаточно открыть какой-нибудь глобальный мутабельный список (ссылка на него может быть в теле ф-ии обратного вызова) и походить по нему, получив в локальной переменной ссылку на объект на куче. Поэтому без учёта кадров стека таких функций, в т.ч. и времени их жизни, ничего работать не будет. Поэтому без обёрток я не представляю как тут выкрутиться. Т.е. либо Сергей что-то не знает, либо оно действительно не работает, либо есть какие-то ограничения на функции обратного вызова, о которых пока ничего не сказано. Например, должно быть запрещено не просто делать NEW, а вообще обращаться к куче. Ну либо оно сделано как-то ещё, т.е. мы слово "обёртка" как-то переименуем, чтобы не отступать от ранее сказанного.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 11:26 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1566
Лисп силён синергией. В форте нет понятия консов а польская запись - для машин, а не для людей. И кучи вроде тоже нет. Т.е. он мелковат. Про смолтолк я не в курсе, но мне его идея ООП как-то не особо нравится. Так-то в целом смолтолк выглядит на сегодня гораздо живее лиспа. Насчёт непрактичности лиспов я в корне не согласен. Напротив. на лиспе легко делается то, что на других языках делается либо горкой костылей за время 10x, либо не делается вообще. У него есть кое-какие ограничения, но в очень широком классе задач я не знаю ему равных. Просто надо притерпеться к его синтаксису и да, в малом он более медленный, т.к. синтаксис там просто как назло сделан в некоторых местах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 11:31 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1174
с обращением к куче проблем нет, и быть не может: единственный вариант получить указатель на объект в куче — это добыть его или из глобальной переменной, или из поля объекта. обе эти штуки уже заякорены, так что ничего опасного нет. опасно только делать NEW с локальной переменной, если стек не сканируется: вот тогда объект не заякорится (даже если быстро локал присвоить глобалу — всё равно в промежутке может активироваться GC).

собственно, если запретить NEW с локалами, то всё будет хорошо. но. есть, так сказать, нюанс: тогда надо анализировать всё потенциально возможное дерево вызовов, потому что мы можем вызвать процедуру, которая сделает NEW с локалом.

ну, или как вариант: NEW знает, что его вызывают из колбэка, и якорит само. тогда надо для колбэка генерировать код «вошёл-вышел». причём со счётчиками, и с обработкой трапов.

короче, как ни крути, а получается сложный и хрупкий монстр. намного проще консервативно сканировать стек и не мучаться.

хотя в A2 консервативное сканирование более неприятно, чем в BBCB. в BBCB рано или поздно (скорее рано) процедура закончится, и мы вернёмся в главный цикл. где стек гарантировано чистый, без лишних якорей. а главный цикл периодически пинает GC (или другие процедуры пинают; всё равно вероятность что-то случайно заякорить навечно около нуля). в BBCB так надо делать, чтобы система продолжала оставаться отзывчивой.

а вот в A2 активности независимы, так что никто не мешает активности крутиться в процедуре со случайным якорем вечно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 11:40 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1566
Я специально написал "мутабельный". Например, процедура обратного вызова может извлечь что-то из глобальной очереди и тогда стек выполнения это процедуры станет единственной ссылкой на этот объект.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 11:41 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1174
budden писал(а):
Лисп силён синергией. В форте нет понятия консов
элементарно добавляется.

budden писал(а):
а польская запись - для машин, а не для людей.
не, вот эта претензия со стороны лисперов очень смешная. у самих-то запись префиксная вместо постфиксной, тоже не для людей. ;-)

budden писал(а):
И кучи вроде тоже нет.
зависит от системы. надо — элементарно делается, в том числе и с GC. не надо (например, какая-нибудь маленькая эмбедовка) — не делается.

тащемта, библиотек для ANS Forth вполне себе дофига, от простых структур данных и до реализаций TCP/IP стека с нуля. (и даже несколько вариантов реализации CLOS есть.) если форт-система имеет режим совместимости с ANS — то проблем обычно не возникает. ну, может иногда пару констант в библиотеке руками настроить надо.

budden писал(а):
Про смолтолк я не в курсе, но мне его идея ООП как-то не особо нравится.
забавно, что оберон (в плане системы, а не языка) на практике реализует именно её: расширение записи чтобы дополнить обработчик, и более-менее универсальный обработчик сообщений.

budden писал(а):
Насчёт непрактичности лиспов я в корне не согласен. Напротив. на лиспе легко делается то, что на других языках делается либо горкой костылей за время 10x, либо не делается вообще. У него есть кое-какие ограничения, но в очень широком классе задач я не знаю ему равных. Просто надо притерпеться к его синтаксису и да, в малом он более медленный, т.к. синтаксис там просто как назло сделан в некоторых местах.
вот точно то же самое, точно теми же словами говорят фортеры про форт. и что характерно: оба лагеря правы. потому что форт и лисп — идеологически близкие родственники.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 11:41 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1566
budden писал(а):
Я специально написал "мутабельный". Например, процедура обратного вызова может извлечь что-то из глобальной очереди и тогда стек выполнения это процедуры станет единственной ссылкой на этот объект.


> а вот в A2 активности независимы, так что никто не мешает активности крутиться в процедуре со случайным якорем вечно.
Вот на этот случай там есть что-то. Я регулярно вижу сообщения "close unreferenced process". Не знаю, что это означает, но как-то там финализируются процессы. Если же активность полноценная, то она есть в списке всех активностей и можно её найти. Если она крутится бесконечно, значит, владелец системы за ней недосмотрел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 11:42 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1174
budden писал(а):
Я специально написал "мутабельный". Например, процедура обратного вызова может извлечь что-то из глобальной очереди и тогда стек выполнения это процедуры станет единственной ссылкой на этот объект.
а. извиняюсь, невнимательно прочитал. при таких раскладах тоже будет афедрон, да.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 11:45 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1174
budden писал(а):
Если она крутится бесконечно, значит, владелец системы за ней недосмотрел.
ну почему не досмотрел? да простой цикл поллинга каких-нибудь датчиков, который иногда дёргает/запускает другие активности. этот цикл будет вечно крутиться, например.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 11:46 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1566
> не, вот эта претензия со стороны лисперов очень смешная

Польская запись описывает создание структуры, а лисповая всё же описывает саму структуру. Так что разница есть и большая. То, что в лиспе плохой синтаксис - это проблема не s-выражений. Они почти не избыточны по сравнению с алгебраической записью. Это проблема самих конструкций, таких, как let. Я это в своё время решал:

https://github.com/lisp-mirror/budden-t ... .lisp#L147

И стало намного лучше программировать на лиспе. Вторая проблема - это отсутствие нотации запись.точка. В hy её сделали, но это сложно воткнуть в уже сложившийся язык, не сломав его. У меня не получилось (сделал и пользовался, но было хрупко и наступал на грабли регулярно).

Если в Форте консы и кучу можно сделать библиотекой, то это не то же, что их наличие в самом языке - оно получается не органично и не увязано. Когда пытаются упростить язык , выкинув всё в библиотеки, то библиотеки могут плохо взаимодействовать между собой, т.к. никто не планирует их развитие как комплекса. В лиспе многое уже изначально в системе, и взаимоувязано.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 11:51 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1566
arisu писал(а):
budden писал(а):
Если она крутится бесконечно, значит, владелец системы за ней недосмотрел.
ну почему не досмотрел? да простой цикл поллинга каких-нибудь датчиков, который иногда дёргает/запускает другие активности. этот цикл будет вечно крутиться, например.


Если речь про бОльшую опасность здесь консервативной сборки мусора, чем в ББЦБ, то да.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 11:52 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1174
и чтобы разбавить адовый офтопик (не, я не против офтопа, если что: занимательная беседа получается): я, наконец, созрел и оторвал обработку шорткатов от меню. теперь менеджер шорткатов — отдельный модуль, и бэкэнд консультируется именно у него. а меню просто регистрирует свои шорткаты в глобальном списке.

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

API пока не полностью вычищено и доделано, но базовая механика уже на месте и работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 11:59 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1174
budden писал(а):
Если в Форте консы и кучу можно сделать библиотекой, то это не то же, что их наличие в самом языке
абсолютно то же самое, потому что в форте нет никакой разницы между «языком» и «библиотеками». плюс там есть очень простые, но мощные и удобные namespaces — словари. иерархические, если хочется. в принципе, такая своеобразная, но вполне рабочая система модулей.

budden писал(а):
оно получается не органично и не увязано.
(косится на common lisp, который полностью не знает, кажется, вообще никто.)

budden писал(а):
Когда пытаются упростить язык , выкинув всё в библиотеки, то библиотеки могут плохо взаимодействовать между собой, т.к. никто не планирует их развитие как комплекса. В лиспе многое уже изначально в системе, и взаимоувязано.
а они и не должны быть комплексом. они должны быть кирпичиками, из которых можно построить любое нужное здание. с небольшим количеством хуков, если надо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 12:28 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1566
arisu писал(а):
и чтобы разбавить адовый офтопик (не, я не против офтопа, если что: занимательная беседа получается): я, наконец, созрел и оторвал обработку шорткатов от меню. теперь менеджер шорткатов — отдельный модуль, и бэкэнд консультируется именно у него. а меню просто регистрирует свои шорткаты в глобальном списке.

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

API пока не полностью вычищено и доделано, но базовая механика уже на месте и работает.


Мне показалось, что это хорошо сделано в Tk. Но да, надо завязывать с офтопиками, и вообще работать надо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 12:30 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1566
arisu писал(а):
budden писал(а):
Если в Форте консы и кучу можно сделать библиотекой, то это не то же, что их наличие в самом языке
абсолютно то же самое, потому что в форте нет никакой разницы между «языком» и «библиотеками». плюс там есть очень простые, но мощные и удобные namespaces — словари. иерархические, если хочется. в принципе, такая своеобразная, но вполне рабочая система модулей.

В лиспе родной ввод-вывод почти весь уже построен на консах. Если в форте их в языке нет, значит там нельзя построить встроенный ввод-вывод на консах. Т.е. разница всё же есть.

arisu писал(а):
budden писал(а):
оно получается не органично и не увязано.
(косится на common lisp, который полностью не знает, кажется, вообще никто.)

По современным меркам Common Lisp достаточно компактный и простой язык. Документация там, конечно, не отличается особой понятностью и удобочитаемостью. Но на фоне какой-нибудь спецификации Котлина (которая, к тому же на момент прочтения мной существовала отдельно от языка и не была обязана чему-либо соответствовать) выглядит довольно скромно. И да, там довольно хорошо увязаны между собой многие части. Не все - CLOS сбоку торчит. Но я вообще сомневаюсь в нужности оного, хотя родовые функции использую. И не идеально. Но хорошо.

Цитата:
budden писал(а):
Когда пытаются упростить язык , выкинув всё в библиотеки, то библиотеки могут плохо взаимодействовать между собой, т.к. никто не планирует их развитие как комплекса. В лиспе многое уже изначально в системе, и взаимоувязано.
а они и не должны быть комплексом. они должны быть кирпичиками, из которых можно построить любое нужное здание. с небольшим количеством хуков, если надо.

Хорошо построенный дом гораздо лучше, чем груда кирпичей. Во всяком случае, для жителя дома. Для строителя - может быть по-разному. И чтобы построить хороший дом, недостаточно иметь груду кирпичей - может получиться дом, а может и "шанхай". Но в целом пусть Форт тоже будет, я от него пришёл к лиспу, т.к. меня привлекла концепция "компилирующих слов". Не знаю, куда он уразвивался с того момента, когда я о нём читал советскую книгу в начале 90-х.

Комплексность - это хорошо. Части друг другу помогают и вместе получается больше, чем простая сумма компонентов. Это называется синергия. Просто N библиотек, написанных без единого плана, не будут обладать синергией, и работать с ними будет гораздо хуже.

Как пример - в Windows Ctlr-C Ctrl-V работает во всех графических приложениях, т.к. единый план. А в Linux может повезти, а может и не повезти. Или разные реализации строк в C++.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 12:50 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1174
budden писал(а):
Мне показалось, что это хорошо сделано в Tk.
вот одна из тех вещей, про которые я на удивление не знаю почти ничего. как-то всегда мимо меня проходила. может, посмотрю, спасибо.

budden писал(а):
Но да, надо завязывать с офтопиками, и вообще работать надо.
да интересная беседа же. я лично совмещаю: поработал — выпил кофе, почитал-пописал. ;-)

budden писал(а):
В лиспе родной ввод-вывод почти весь уже построен на консах. Если в форте их в языке нет, значит там нельзя построить встроенный ввод-вывод на консах. Т.е. разница всё же есть.
так в форте и встроеного ввода-вывода нет. ;-) ну, блоки — и даже они не обязательны. в большинстве форт-систем низкоуровневые i/o примитивы векторизуют, а поверх делай что хочешь.

budden писал(а):
По современным меркам Common Lisp достаточно компактный и простой язык.
вот поэтому я и не пользуюсь «современными языками». у нас с ними кардинально не совпадает понимание простоты и компактности.

budden писал(а):
Хорошо построенный дом гораздо лучше, чем груда кирпичей. Во всяком случае, для жителя дома.
так никто пользователю кирпичи и не даёт. кирпичи нужны мне, чтобы дать пользователю удобный дом.

опять таки: современное стремление иметь типовые жилые районы, в которых всё строительство заключается в том, что домики можно чуть-чуть подвигать, да иногда стены перекрасить — от меня очень далеко. мне, пожалуйста, кирпичи и цемент, остальное я уж сам.

budden писал(а):
Но в целом пусть Форт тоже будет, я от него пришёл к лиспу, т.к. меня привлекла концепция "компилирующих слов". Не знаю, куда он уразвивался с того момента, когда я о нём читал советскую книгу в начале 90-х.
да никуда особо: что там развивать-то? сделали ANS-стандарт (не самая лучшая идея, и стандарт не самый лучший, но и не ужас-ужас). периодически появляются разные прикольные идеи, которые остальные к себе утаскивают. типа забавного слова "…" (многоточие), к которому можно подцеплять цепочку вызовов. "scattered colon" называется:
Код:
: init ... ." init complete\n" ;
init

.( =================\n)
..: init ." init phase1\n" ;..
init

.( =================\n)
..: init ." init phase2\n" ;..
init

.( =================\n)
..: init ." init phase3\n" ;..
init

.( =================\n)
..: init ." init phase4\n" ;..
init

.( =================\n)
..: init ." preinit phase 1\n" <;..
init

.( =================\n)
..: init ." preinit phase 0\n" <;..
init

.( =================\n)
..: init ." init phase5\n" ;..
init

.( =================\n)

.( =================\n)
: init2 ... ." init2 complete\n" ;
init2

.( =================\n)
..: init2 ." pteinit2 phase1\n" <;..
init2

.( =================\n)
..: init2 ." init2 phase0\n" ;..
init2

.( =================\n)
..: init2 ." pteinit2 phase0\n" <;..
init2

.( =================\n)
..: init2 ." init2 phase1\n" ;..
init2

.stack
bye

с таким вот выхлопом:
Код:
init complete
=================
init phase1
init complete
=================
init phase1
init phase2
init complete
=================
init phase1
init phase2
init phase3
init complete
=================
init phase1
init phase2
init phase3
init phase4
init complete
=================
preinit phase 1
init phase1
init phase2
init phase3
init phase4
init complete
=================
preinit phase 0
preinit phase 1
init phase1
init phase2
init phase3
init phase4
init complete
=================
preinit phase 0
preinit phase 1
init phase1
init phase2
init phase3
init phase4
init phase5
init complete
=================
=================
init2 complete
=================
pteinit2 phase1
init2 complete
=================
pteinit2 phase1
init2 phase0
init2 complete
=================
pteinit2 phase0
pteinit2 phase1
init2 phase0
init2 complete
=================
pteinit2 phase0
pteinit2 phase1
init2 phase0
init2 phase1
init2 complete
stack empty

такие своеобразные хуки.
и всякое подобное.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 17:33 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 295
Откуда: Russia
arisu писал(а):
то есть, в колбэках запрещено делать NEW?

Если колбэк делает NEW, то он должен сохранять ссылки где-то внутри A2 - так как, по сути, выполняется в чужом сегменте. Тем не менее, барьеры записи маркируют блоки памяти при создании и присваивании указателей, независимо от того, помечена ли процедура как {WINAPI/C} или нет. Если вдруг запустится полная сборка мусора, то если мы сохранили единственную ссылку в локальных переменных колбэка, то есть шанс, что память будет освобождена до того, как колбэк закончит работу. Отдавать сущности A2 чужим процессам это, естественно, неправильно.
Если в колбэке есть необходимость выделения памяти, то либо пользоваться средствами нижележащей ОС, либо NEW внутри A2(в модуле или в коллекции).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 17:56 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 295
Откуда: Russia
budden писал(а):
Не верю, но разобраться некогда.

Во что именно ты не веришь? Если в процедуру, помеченную {WINAPI}, например Windows.Display.WindowProc поставить HALT или ASSERT, то в трапе метаданные будут присутствовать, несмотря на то, что никаких тегов нет, так как соглашение о вызове WINAPI не подразумевает их наличия.
Код:
TRAP 0 [1] PL 3 0  HALT statement
System: WinA2 (64bit) Sep 14 2023 Kernel_CRC=525CE612 Uptime=38FFB311
...
StackTraceBack:
Display.WindowProc:230 pc=0000000000C67A8D fp=0000000004ABF540 crc=4144686B
  hwnd= [@16] 0000000000060860
  uMsg= [@24] 36
  wParam= [@32] 0
  lParam= [@40] 78379024[0000000004ABF810]
  win= [@-16] 0000000000000000 NIL
  dbh= [@-24] 0000000000000000 NIL
  dbv= [@-32] 0000000000000000 NIL
  i= [@-36] 0
Unknown external procedure, pc = 00007FFB31CEE858

Собирать свой мусор в чужом процессе A2 не умеет, о чём я выше написал.
Тем не менее, при использовании NEW и присваивании барьеры записи помечают блок памяти как живой.
В документе несколько напутано с процедурами а2, помеченными как WINAPI и собственно процедурами winapi, при вызове которых вставляются вызовы Objects.LeaveA2/Objects.ReenterA2 для отслеживания фреймов стека


Последний раз редактировалось Sergej Durmanov Пятница, 15 Сентябрь, 2023 19:10, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: BlackBox: Lament Configuration
СообщениеДобавлено: Пятница, 15 Сентябрь, 2023 17:58 

Зарегистрирован: Воскресенье, 25 Декабрь, 2022 23:14
Сообщения: 1174
Sergej Durmanov писал(а):
Если вдруг запустится полная сборка мусора, то если мы сохранили единственную ссылку в локальных переменных колбэка, то есть шанс, что память будет освобождена до того, как колбэк закончит работу.
ясно, спасибо. жаль, что A2 вместо этого не делает консервативный скан стека (если есть активные колбэки): можем же нечаянно всю систему развалить.

понятно, что это актуально только для A2, которая исполняется как процесс на чужой ОС (что, полагаю, просто никогда не являлось основным режимом работы).

я, если что, без негатива: понимаю, что сделать можно, но всё как обычно упирается в того, кому это срочно понадобится.

p.s.: что отдавать блоки, выделеные через A2, чужим библиотекам неправильно — это понятно, тут никаких претензий нет и быть не может, конечно.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 649 ]  На страницу Пред.  1 ... 26, 27, 28, 29, 30, 31, 32, 33  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB