Мне интересно, существуют ли какие-либо языки, позволяющие добавлять/удалять/обновлять любой класс на лету без перезагрузки всего приложения? (При условии, что я могу принять некоторые неудобства, такие как удостовериться, что в настоящий момент нет методов, работающих на данный момент + некоторые дополнительные усилия для "переноса" элементов данных класса).
Веб-приложения, в которых вы заменяете 1 файл, и он используется в следующем запросе клиента, не является тем, что мне нужно (например, Perl, PHP). Приложение должно непрерывно работать и иметь некоторое внутреннее состояние.
Другие требования
- Нет GIL или подобных проблем, препятствующих использованию SMP
- Предпочтительно - существование JIT-подобной виртуальной машины (то есть, когда производительность близка к собственному коду). Идеальное решение было бы иметь возможность перезагрузить модуль в CLang или любом другом языке LLVM. Это было бы просто идеально.
Об уже полученных ответах:
- .NET/Java не подходит - у них обоих слишком громоздкие виртуальные машины, и значительная часть приложения будет работать в Linux.
- Эрланг - похоже, что это возможно, но это ужасно для моего невооруженного глаза, я просто не могу смотреть спокойно, если это, случай и строки. Кроме того, я бы предпочел избегать передачи голых источников клиентам, скомпилированный байт-код будет намного лучше.