Re[20]: Замена кода "на лету"
От: Sinclair Россия https://github.com/evilguest/
Дата: 23.06.09 03:31
Оценка:
Здравствуйте, Cyberax, Вы писали:
C>Ты что? Ссылка на VMT сохраняется в каждом объекте, при загрузке новой библиотеки новые объекты будут получать ссылку на новую VMT, а старые так и будут со старой таблицей работать.
Хм. Интересно, куда будет показывать ссылка на VMT, и куда будут показывать слоты VMT после того, как код был выгружен.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[21]: Замена кода "на лету"
От: Cyberax Марс  
Дата: 23.06.09 06:48
Оценка:
Здравствуйте, Sinclair, Вы писали:

C>>Ты что? Ссылка на VMT сохраняется в каждом объекте, при загрузке новой библиотеки новые объекты будут получать ссылку на новую VMT, а старые так и будут со старой таблицей работать.

S>Хм. Интересно, куда будет показывать ссылка на VMT, и куда будут показывать слоты VMT после того, как код был выгружен.
Как куда? В invalid memory, как обычно. Поэтому, выгружать надо только когда убедился, что не осталось ссылок на старую библиотеку.

Ну или загружать новую библиотеку параллельно старой.
Sapienti sat!
Re[22]: Замена кода "на лету"
От: Sinclair Россия https://github.com/evilguest/
Дата: 23.06.09 07:13
Оценка:
Здравствуйте, Cyberax, Вы писали:
S>>Хм. Интересно, куда будет показывать ссылка на VMT, и куда будут показывать слоты VMT после того, как код был выгружен.
C>Как куда? В invalid memory, как обычно. Поэтому, выгружать надо только когда убедился, что не осталось ссылок на старую библиотеку.
C>Ну или загружать новую библиотеку параллельно старой.
То есть всё то же самое. Хотя и можно нагнуться и сделать late binding, опасностей от этого будет больше, чем бенефитов.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[21]: Замена кода "на лету"
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.06.09 12:52
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Cyberax, Вы писали:

C>>Ты что? Ссылка на VMT сохраняется в каждом объекте, при загрузке новой библиотеки новые объекты будут получать ссылку на новую VMT, а старые так и будут со старой таблицей работать.
S>Хм. Интересно, куда будет показывать ссылка на VMT, и куда будут показывать слоты VMT после того, как код был выгружен.

А куда в яве указывают? Там же без проблем можно отдельные классы загружать.

Среда управляемая. Все ссылки известны. Технических проблем проверить отсутствие ссылок на типы из старой сборки нет. Так что это какая-то недоработка в CLR. В Яве такое работает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: Замена кода "на лету"
От: Sinclair Россия https://github.com/evilguest/
Дата: 24.06.09 03:51
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>А куда в яве указывают? Там же без проблем можно отдельные классы загружать.
Выгрузить класс, у которого есть живые экземпляры, нельзя.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[23]: Замена кода "на лету"
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.06.09 11:51
Оценка:
Здравствуйте, Sinclair, Вы писали:

VD>>А куда в яве указывают? Там же без проблем можно отдельные классы загружать.

S>Выгрузить класс, у которого есть живые экземпляры, нельзя.

Это и не является проблемой. Главное, что нет нужды выгружать целое приложение только потому, что нужно заменить версию класса. Так что это скорее недоработка CLR.

В прочем, лично меня бы очень устроила бы реализация SIP-ов из Сингулярити.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Замена кода "на лету"
От: Michael7 Россия  
Дата: 02.07.09 19:24
Оценка:
Здравствуйте, md03t4, Вы писали:

M>Я знаю, что subj реализован в Erlang-е.

M>Есть ли еще языки/системы, где реализован похожий функционал?

Common Lisp, SmallTalk, если я правильно понял.
Re[2]: Замена кода "на лету"
От: LaptevVV Россия  
Дата: 06.07.09 07:21
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Со средней гранулярностью (единица загрузки — класс/модуль)

LCR>Java, Ocaml

LCR>С большой гранулярностью (единица загрузки — домен)

LCR>.net 1.0

Добавлю еще сюда БлэкБокс с Компонентным паскалем. Единица загрузки — модуль.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.