Size: a a a

Compiler Development

2021 January 07

AK

Andrei Kurosh in Compiler Development
Tommy
Все так, но после edit должен быть Incremental build, чтобы было что релоадить
Ну почему - можно заново сбилдить все, а потом искать диффы
источник

BD

Berkus Decker in Compiler Development
Tommy
Все так, но после edit должен быть Incremental build, чтобы было что релоадить
нет, это никак не связано
источник

T

Tommy in Compiler Development
Andrei Kurosh
Ну почему - можно заново сбилдить все, а потом искать диффы
Можно, но долго
источник

AT

Alexander Tchitchigi... in Compiler Development
Tommy
Можно, но долго
Why do you think so?
источник

T

Tommy in Compiler Development
Berkus Decker
нет, это никак не связано
Хм, да, действительно
источник

Dv

Dr. Friedrich von Ne... in Compiler Development
Andrei Kurosh
Ну почему - можно заново сбилдить все, а потом искать диффы
Настоящий EnC компилит конкретный метод, вроде бы
источник

Dv

Dr. Friedrich von Ne... in Compiler Development
Именно из-за этого в нём столько стрёмных ограничений
источник

BD

Berkus Decker in Compiler Development
там ограничения скорее из-за того что нельзя в работающей аппе поменять вообще всё, оно просто патчит вызовы функций, но запатчить многое другое нельзя - например удалить переменную сложно если в нее кто-то лазит в живом коде
источник

AK

Andrei Kurosh in Compiler Development
Berkus Decker
там ограничения скорее из-за того что нельзя в работающей аппе поменять вообще всё, оно просто патчит вызовы функций, но запатчить многое другое нельзя - например удалить переменную сложно если в нее кто-то лазит в живом коде
Ну в джаваскрипте например можно заменить модуль целиком вместе со всеми переменными и чем-угодно-еще
источник

AK

Andrei Kurosh in Compiler Development
А в сишарпе - да, там очень мало что можно поменять. Но добавить переменную или удалить вызов метода можно. А вот добавить другой метод или await-вызов нельзя
источник

J

JohnByte in Compiler Development
Kir
Там ещё GC до 5 не было, вроде
Если не было то как, интересно управление памятью выглядело
источник

AT

Alexander Tchitchigi... in Compiler Development
JohnByte
Если не было то как, интересно управление памятью выглядело
Как аллокации без освобождения с рекламацией памяти ОС в процессе деаллокации процесса с CGi-скриптом. 🤷‍♀️
источник

J

JohnByte in Compiler Development
Если GC (да и нормальной работы с памятью) не было, то по сути такой тест бы проходил:

function a() {
 $a = 5;
}

function b() {
 assert($a === 5); // OK
 $b = 3;
 assert(($a + $b) === 8); // OK
}

b();
источник

J

JohnByte in Compiler Development
Мб различались только symbol tables глобальная и для функции
источник

AT

Alexander Tchitchigi... in Compiler Development
JohnByte
Если GC (да и нормальной работы с памятью) не было, то по сути такой тест бы проходил:

function a() {
 $a = 5;
}

function b() {
 assert($a === 5); // OK
 $b = 3;
 assert(($a + $b) === 8); // OK
}

b();
Какое это отношение имеет к GC???
источник

J

JohnByte in Compiler Development
Alexander Tchitchigin
Как аллокации без освобождения с рекламацией памяти ОС в процессе деаллокации процесса с CGi-скриптом. 🤷‍♀️
Получается, переменные (вместе с фреймами функций к которым они привязаны) жили пока выполнялся скрипт?
источник

AT

Alexander Tchitchigi... in Compiler Development
JohnByte
Получается, переменные (вместе с фреймами функций к которым они привязаны) жили пока выполнялся скрипт?
Переменные, фреймы, аллоцированная память и время жизни — это всё ортогональные понятия, связанные постольку поскольку. Так что я просто не понимаю, о чём именно Вы спрашиваете. 🤷‍♀️
источник

J

JohnByte in Compiler Development
О том как аллоцировалась память без GC в скриптовом языке.

Сейчас пришел к гипотезе о том, что когда интерпретатор видит заголовок функции, он выполняет процедуру создания некой символьной таблицы для этой функции куда записываются все локальные переменные для нее. И все такие таблицы во время выполнения скрипта живут в памяти вместе с объектами на которые ссылались/ссылаются локальные переменные. Я правильно рассуждаю?
источник

AT

Alexander Tchitchigi... in Compiler Development
JohnByte
О том как аллоцировалась память без GC в скриптовом языке.

Сейчас пришел к гипотезе о том, что когда интерпретатор видит заголовок функции, он выполняет процедуру создания некой символьной таблицы для этой функции куда записываются все локальные переменные для нее. И все такие таблицы во время выполнения скрипта живут в памяти вместе с объектами на которые ссылались/ссылаются локальные переменные. Я правильно рассуждаю?
В интерпретаторе скриптового языка.
void *storage = malloc(sizeof(something));

You're welcome.
источник

AT

Alexander Tchitchigi... in Compiler Development
JohnByte
О том как аллоцировалась память без GC в скриптовом языке.

Сейчас пришел к гипотезе о том, что когда интерпретатор видит заголовок функции, он выполняет процедуру создания некой символьной таблицы для этой функции куда записываются все локальные переменные для нее. И все такие таблицы во время выполнения скрипта живут в памяти вместе с объектами на которые ссылались/ссылаются локальные переменные. Я правильно рассуждаю?
Примерно так. Если поддерживается рекурсия, то таблица создаётся при каждом входе в функцию.
источник