scala.reflect - наш публичный API, появившийся в Скале версии 2.10 - оказался весьма полезным на практике. Благодаря макросам, основанным на новом API, стало возможным реализовать такие библиотеки как async (DSL для упрощения работы с асинхронностью), pickling (статически генерируемые сериализаторы с отличным перфомансом), scala-blitz (ускорялка
(
Read more... )
Comments 31
И еще мелочный вопрос: раз оно тащит все в рантайм (я правильно вообще понял?), то это ж дженерики теперь не затираются!? Ну, потенциально. М?
Reply
Reply
Reply
Reply
Это на какой хоть скале, на 11-й?
Reply
Reply
Reply
Reply
(The comment has been removed)
Reply
вам compile-time API дают а Вы всё runtime да runtime требуете ...
Reply
На слайде 53 кратко упоминается о том, что сохранение AST обеспечивает равные возможности для всех хостов. Это значит, что в новой системе не должно быть разницы между compile-time и runtime метапрограммированием - и там, и там будет информация про полный AST программы. По факту, единственной проблемой, которую мы пока что заметили, является erasure, но тут без тяжелой артиллерии не справиться.
Для примера. Сейчас в разработке находится GSoC проект по рантайм экспаншену макросов. По задумке, он предоставит возможность откладывать раскрытие определенных макро вызовов до рантайма, позволяя макросы, исполняемые во время компиляции, прозрачно раскрывать в рантайме. Посмотрим как оно будет, но пока что я надеюсь, что удастся во многом стереть границу между compile-time и runtime.
Reply
Для scala.reflect я был слишком тупой, а тут всё кристально ясно.
А как тигрицу уговорили? :)
Reply
Reply
Leave a comment