Какой язык программирования позволяет обновлять любой класс на лету?

Мне интересно, есть ли какие-либо языки, позволяющие добавлять / удалять / обновлять любой класс на лету без перезагрузки всего приложения? (При условии, что я могу принять некоторые неудобства, такие как проверка того, что в данный момент не запущены методы + некоторые дополнительные усилия для «переноса» членов данных класса).

Веб-приложения, в которых вы заменяете 1 файл, и он используется при следующем запросе клиента, это не то, что я (например, Perl, PHP). Приложение должно работать постоянно и иметь какое-то внутреннее состояние.

Другие требования:

  1. Отсутствие GIL или подобных проблем, препятствующих использованию SMP
  2. Предпочтительно - наличие JIT-подобной виртуальной машины (т.е. где производительность близка к машинному коду). Идеальным решением была бы возможность перезагрузить модуль на CLang или любом другом языке на основе LLVM. Это было бы просто идеально.

Об уже сделанных ответах:

  • .NET / Java не подходят - у них обоих слишком громоздкие виртуальные машины, и значительная часть приложений будет работать на Linux.
  • Erlang - выглядит вроде это возможно, но это ужасно для моего невооруженного глаза, я просто не могу спокойно смотреть на это, если, футляры и завязки. Кроме того, я бы предпочел избегать передачи голых исходников клиентам, скомпилированный байт-код был бы намного лучше.
13
задан BarsMonster 14 March 2011 в 23:52
поделиться