Посоветуйте
От: Аноним  
Дата: 08.02.05 23:04
Оценка:
Я давно слежу за вашим проектом, все мне здесь очень нравиться.
Пришла мне в голову одна идея — создать аналог R# но только не для исходного кода C#, а для IL т.е. производить все трансформации на уровне метаданных.
На данный момент кое что у меня начало получаться и заработало, но в общем проект пока в зародышевом состоянии.
Ознакомиться с обзором можно здесь

У меня просьба — выскажите свое мнение по поводу прочитанного.
Re: Посоветуйте
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.02.05 04:48
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>У меня просьба — выскажите свое мнение по поводу прочитанного.

Напиши понагляднее структуру AST. Это — самое тонкое место. Почти все паттерны AOP требуют гранулярности мельче чем метод. Как минимум хотелось бы возможности инжектировать определенный код в начало и конец существующего метода. Поэтому интересно, какова мелкая структура AST.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Посоветуйте
От: Аноним  
Дата: 09.02.05 09:14
Оценка:
Здравствуйте, Sinclair, Вы писали:

S> Поэтому интересно, какова мелкая структура AST.


В кратце — так: В AST загруженные сборки разложены по классам, и мемберам классов. На данный момент мембер может быть трех типов (метод|поле|евент). Узел AST для метода имеет специализированные свойства среди которых ссылка на список IL инструкций, Этот список не readonly.
Более наглядные, в этом обзорном документе, в приложении есть схемы.
Re[3]: Посоветуйте
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.02.05 11:20
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>В кратце — так: В AST загруженные сборки разложены по классам, и мемберам классов. На данный момент мембер может быть трех типов (метод|поле|евент). Узел AST для метода имеет специализированные свойства среди которых ссылка на список IL инструкций, Этот список не readonly.

А как с Exception handlers? В MSIL специальная структура предусмотрена. Я бы предпочел, чтобы AST это отражало.
А>Более наглядные, в этом обзорном документе, в приложении есть схемы.
О, я вижу ты обновил приложение.
Кстати, ты бы зарегистрировался. Это бесплатно. А то как-то неловко с анонимом разговаривать.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Посоветуйте
От: mike__ Россия http://raxxla.ru
Дата: 09.02.05 19:49
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>А как с Exception handlers? В MSIL специальная структура предусмотрена. Я бы предпочел, чтобы AST это отражало.


над этим я щас и работаю. Пока незнаю будет AST отражать блоки исключений или нет(непонятно пока насколько это удобно), но вот ввести дополнительные IL инструкции думаю нужно. типа try и endtry. Использовать их для разбора начала и завершения блока обработчика исключения. А в момент сохранения тела метода — трансформировать их в стандартные MSIL структуры.
Но с этим пока мутно все. найти бы доки на русском по CLI и IL или что то схожее. я щас пользуюсь документацией из NET SDK 2.0 а тап по английски.
Re[5]: Посоветуйте
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.02.05 04:41
Оценка:
Здравствуйте, mike__, Вы писали:

__>над этим я щас и работаю. Пока незнаю будет AST отражать блоки исключений или нет(непонятно пока насколько это удобно), но вот ввести дополнительные IL инструкции думаю нужно. типа try и endtry.

Плохая идея. Преимущество AST — в том, что мало шансов породить неверный код. try, не снабженный соответствующим endtry вставить — нефиг делать.
__>Использовать их для разбора начала и завершения блока обработчика исключения. А в момент сохранения тела метода — трансформировать их в стандартные MSIL структуры.
__>Но с этим пока мутно все. найти бы доки на русском по CLI и IL или что то схожее. я щас пользуюсь документацией из NET SDK 2.0 а тап по английски.
А что там непонятно? Там очень легкий английский. Если что — спрашивай.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Посоветуйте
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.05 13:46
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>У меня просьба — выскажите свое мнение по поводу прочитанного.


Что я могу сказать? Идея верная, и как и все верные идеи, не новая. Из аналогичных идей могу указать на две самые, на мой взгляд, интересные:
1. Microsoft Phoenix.
2. Spring.

Первное — это разработака МС на базе которой будут развиваться новые версии компиляторов МС.
Второе — это фрэймвор созданный на Яве использующий подобную технику для достижения довольно интересеных фич.

Идея сама по себе хорошая, но крайне сложная в исполннении. Причем сложен именно низкоуровневый движок модификации ИЛ-а. Именно эту проблему и устранит Феникс.

К сожалению Феникс пока что не доступен общественности. Иначе его использование было бы идеальным для подобных проектов.

Боюсь, что без Феникса подобный проект обречен на чисто ислледовательские цели. Причем скорее всего скоро окажется, что проект не поспевает за тем же Фениксом (я к сожалению не знаком с состоянием дел проекта).

Со своей стороны (сторы rsdn.ru) мы может поддержать этот проект выделив для него ресурсы на сервере (форум, векту в проектах, опубликовав статьи).

Ну, и естественно будем рады обсудить идеи касающиеся метапрогарммирования в этом форуме и в Философии.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Посоветуйте
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.05 13:46
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>В кратце — так: В AST загруженные сборки разложены по классам, и мемберам классов. На данный момент мембер может быть трех типов (метод|поле|евент). Узел AST для метода имеет специализированные свойства среди которых ссылка на список IL инструкций, Этот список не readonly.

А>Более наглядные, в этом обзорном документе, в приложении есть схемы.

А АСТ низкоуровневое (мсил-ное) или происходит декомпиляция в более менее высокоуровневые конструкции (if-ы, for-ы...)?
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Посоветуйте
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.05 13:46
Оценка:
Здравствуйте, mike__, Вы писали:

__>но вот ввести дополнительные IL инструкции думаю нужно.


IL не лучший выбор для чтения и модификации. По-моему, нужно или декомпилировать в высокоуровневые конструкции (лучше просто в я-ля Шарп), или как Фенексе, создать собственный промежуточный язык. Почетай, кстати, их описание. Там не много, но основные идеи понять можно.

__>Но с этим пока мутно все. найти бы доки на русском по CLI и IL


Нереально.

__> или что то схожее. я щас пользуюсь документацией из NET SDK 2.0 а тап по английски.


Книгу Лидина читал? Очень полезная вещь.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Посоветуйте
От: Kupaev Россия www.rsdn.ru
Дата: 10.02.05 14:09
Оценка:
Здравствуйте, mike__, Вы писали:

Почему бы не изложить это в виде статьи? О R# мы уже писали, так что не опубликовать о RILTE?
Re[2]: Посоветуйте
От: mike__ Россия http://raxxla.ru
Дата: 10.02.05 21:14
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Что я могу сказать? Идея верная, и как и все верные идеи, не новая. Из аналогичных идей могу указать на две самые, на мой взгляд, интересные:

VD>1. Microsoft Phoenix.
VD>2. Spring.

VD>Первное — это разработака МС на базе которой будут развиваться новые версии компиляторов МС.

VD>Второе — это фрэймвор созданный на Яве использующий подобную технику для достижения довольно интересеных фич.

еще есть RAIL (Runtime Assembly Instrumentation Library) для NET 1.1, жаль не для 2.0 а то бы и писать ничего не пришлось.

VD>Идея сама по себе хорошая, но крайне сложная в исполннении. Причем сложен именно низкоуровневый движок модификации ИЛ-а. Именно эту проблему и устранит Феникс.


бесспорно. ядро RILTE.Core — это модификация утилиты ILMerge от Microsoft (я писал в обзоре). Эта утилита для склеивания нескольких NET сборок в одну. я гонял под ней несколько тестовых сборок и некоторые системные — вроде все работает после склеивания, единственная проблема пока с ней — иногда выдает невалидную итоговую сборку, если одна из исходных написана была на MC++, я думаю это что то связано с самим компилятором MC++.


VD>Боюсь, что без Феникса подобный проект обречен на чисто ислледовательские цели. Причем скорее всего скоро окажется, что проект не поспевает за тем же Фениксом (я к сожалению не знаком с состоянием дел проекта).


на данный момент цели именно исследовательские. что в итоге может из этого получиться я незнаю. но сердце чует что-то хорошее может выйти.

VD>Со своей стороны (сторы rsdn.ru) мы может поддержать этот проект выделив для него ресурсы на сервере (форум, векту в проектах, опубликовав статьи).


спасибо, один в поле не воин. от помощи не откажусь.
что нужно для етого? нормальный обзор в виде статьи или исходники хорошо документированные?
И то и другое могу представить — нужно только время.
Re[6]: Посоветуйте
От: mike__ Россия http://raxxla.ru
Дата: 10.02.05 21:23
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Книгу Лидина читал? Очень полезная вещь.


что за книга?
Re[7]: Посоветуйте
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.02.05 17:59
Оценка:
Здравствуйте, mike__, Вы писали:

VD>>Книгу Лидина читал? Очень полезная вещь.


__>что за книга?


Лидин
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Посоветуйте
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.02.05 17:59
Оценка:
Здравствуйте, mike__, Вы писали:

__>спасибо, один в поле не воин. от помощи не откажусь.

__>что нужно для етого? нормальный обзор в виде статьи или исходники хорошо документированные?
__>И то и другое могу представить — нужно только время.


1. Обзорную статью рассказывающую о сути проекта и видимых путях его реализации.
2. Чтобы создать проект нужно завести репозиторий и дать нужные права. Для этого нужно связаться со мной по мылу.

В общем, начать естественно лучше со статьи. А там по тихоничку определимся.
... << RSDN@Home 1.1.4 beta 3 rev. 279>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.