Сообщение Re[82]: MS забило на дотнет. Питону - да, сишарпу - нет? от 17.09.2021 20:07
Изменено 17.09.2021 20:10 vdimas
Re[82]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, Sinclair, Вы писали:
V>>Облом было ради такой задачи возиться аж с опкодами.
S>С какими ещё опкодами?
S>Во-первых, там внутри — dynamicMethod. https://stackoverflow.com/questions/43041190/do-compiled-expression-trees-leak
S>Во-вторых, даже если бы его там не было, то достаточно самому состряпать DynamicMethod и отдать его в Expression.CompileToMethod().
Если я сказал, что с выходом Expression посмотрел на возможность построения альтернативных Expression (т.е. неких своих), то как на момент их разработки я мог взять Expression и DynamicMethod?
И какие плюшки, кроме ощущения причастности к новизне, должно было дать переписывание готового кода на более тяжеловесную технологию?
V>>Как можно желать того, о чём не в курсе? ))
S>Аффект — это от английского affect = "to act on, to change something".
В том контексте оно означало "задевает, имеет отношение, касается".
Вот я и спрашиваю, как меня может задевать отсутствие некоей функциональности, о потенциальном наличии которой я даже не догадываюсь?
А в случае отсутствия поддержки статических локальных методов — догадываюсь, меня это касается. ))
S>Речь не о том, что кто-то из пользователей чего-то хотел. А о том, что миллионы людей страдали, описывая SQL в строковых константах.
Ну, у нас когда-то был свой query builder, недалеко от методов-расширений Linq уехало.
Но без поддержки query-синтаксиса.
В любом случае, даже с появлением linq запросы на обновление и удаление точно так же требовали генерирования SQL каким-либо образом вне Linq.
Т.е., из CRUD linq повлиял только на одну букву.
(и да, я в курсе про остроумное решение с синтаксисом обновления в ORM-библиотеке за авторством IT)
S>Нуу... да. Теоретически можно замутить свой SinglecastDelegate на основе managed function pointer, а в компилятор запилить умение компилировать лямбду в него .
И это был мой второй подход к Exression, буквально через минуту, как увидел указатели на ф-ии.
Но там есть сложность — лямбда может захватывать контекст или нет, т.е. представлять из себя статический метод или экземплярный захваченного контекста.
Делегаты в этом смысле обеспечивают абстракцию.
Делегат хранит адрес целевой ф-ии и знает как надо вызывать эту ф-ию — подставляя значение сохранённого object в кач-ве this или нет.
Это разные вызовы с разной арностью при одинаковой внешней арности делегата.
S>Тогда лёгким манием руки дропаем нынешний код Func<...>, переименовываем SinglecastDelegate<...> в Func<...>, и наслаждаемся.
S>Мультикастами могут быть только Action<...>.
Разве?
Что выведет:
?
V>>Если некая контора отпустила некий стандарт в свободное плавание, то за каким чёртом у неё остаётся возможность контроллировать дальнейшее развитие этого стандарта?
V>>Сюрр...
S>Свободное плавание явы началось только в ноябре 2006.
В смысле, заопенсорсили реализацию?
Я про стандарт языка говорил.
Java Community Process был создан в 90-е, стандарт на язык был опубликован тогда же.
Но нельзя присвоить опубликованный стандарт языка, если нет патента.
А патент на язык не дадут.
Любой может пользоваться стандартом, форкать в своих интересах на своё усмотрение и т.д.
Это личное дело субъекта предпринимательства.
Т.е., юридической основы для иска не было.
V>>Я же отслеживаю фичи, обсуждения, расставляемые приоритеты и как вообще принимается решения о назначении приоритетов.
V>>Сейчас фичи включаются в релизы по мере фактической готовности, а приоритеты расставляются исходя из того, есть кому заниматься такой-то задачей или нет.
S>Это вы сейчас про свою секретную компанию, или про дотнет?
Про дотнет.
В нашей компании всё стандартно — ресурсы перекидываются по велению руководства.
S>Если про дотнет, то мы оба неправы.
S>Исходно локальные функции прекрасно работали в Expression Trees, и там захватывался ровно mangled method name — всё, как вы хотели.
S>Вот pull request, который это изменил: https://github.com/dotnet/roslyn/pull/3849
S>Не было никаких комитетов и обсуждения "добавить их в expression builder или нет", не было оценок стоимости, полезности, и движения в бэклоге.
S>Не было никаких "нам сложно объяснять, почему статик можно, а нестатик нельзя" — было можно оба.
В случае нестатик возможны неоднозначности, которые непонятно как решать.
Например, без локальных ф-ий происходящее очевидно:
Выведет
О захвате мутабельной переменной i компилятор честно выдаст warning при компиляции.
Но локальная ф-ия может скрыть свою мутабельную природу.
А как обеспечить чистоту функций на уровне языка — непонятно.
S>Просто конкретная Эшли Хаук решила, что "References to local functions are now disallowed in expression trees, which may or may not change in the future (Previously they were generated as a reference to a mangled method name, which seemed wrong)".
S>Почему wrong? Да потому, что "local functions in general are bad" (смотреть обсуждение PR). Всё. Это reason enough.
Про локальные я полностью согласен — это непредсказуемая дичь в случае Expression и обычных делегатов, т.к. не всегда очевидно, что именно захватывается и где, т.к. таких локальных ф-ий может быть несколько, но они шарят общий контекст.
Но статические локальные ф-ии чисты относительно контекста, т.е. не подменяют значений и ссылок локальных переменных.
V>>А в эту область (exression и прочий сахар) разработки нужны люди навроде тебя, любящие дотнет в его исходной парадигме, чтобы холили и лелеяли такой взгляд на вещи в платформе, усиливали своим вкладом те самые моменты.
V>>Но сейчас там задают тон люди, не принявшие исходную парадигму, т.е. твои "природные дотнетные враги", навроде меня. ))
S>И это тоже выглядит неверным. Я вот пока не понимаю, почему де Смет не делает Pull Request. Уже больше года, как поддержка всего на свете в Expression готова.
Может, понимает, что не пройдёт.
Или видит недостаточный приоритет этой задаче.
Разобрать серьезный PR — это лужу перешагнуть.
У нас на работе как начинаю разбирать... Иногда ловишь себя на мысли, что быстрее было самому сделать чем тщательно объяснять десяток одновременно участвующих тонкостей.
А в его коде этих тонкостей сотни.
Это нужна приличная команда для верификации такого PR, которая будет много дней разбирать его код.
V>>Облом было ради такой задачи возиться аж с опкодами.
S>С какими ещё опкодами?
S>Во-первых, там внутри — dynamicMethod. https://stackoverflow.com/questions/43041190/do-compiled-expression-trees-leak
S>Во-вторых, даже если бы его там не было, то достаточно самому состряпать DynamicMethod и отдать его в Expression.CompileToMethod().
Если я сказал, что с выходом Expression посмотрел на возможность построения альтернативных Expression (т.е. неких своих), то как на момент их разработки я мог взять Expression и DynamicMethod?
И какие плюшки, кроме ощущения причастности к новизне, должно было дать переписывание готового кода на более тяжеловесную технологию?
V>>Как можно желать того, о чём не в курсе? ))
S>Аффект — это от английского affect = "to act on, to change something".
В том контексте оно означало "задевает, имеет отношение, касается".
Вот я и спрашиваю, как меня может задевать отсутствие некоей функциональности, о потенциальном наличии которой я даже не догадываюсь?
А в случае отсутствия поддержки статических локальных методов — догадываюсь, меня это касается. ))
S>Речь не о том, что кто-то из пользователей чего-то хотел. А о том, что миллионы людей страдали, описывая SQL в строковых константах.
Ну, у нас когда-то был свой query builder, недалеко от методов-расширений Linq уехало.
Но без поддержки query-синтаксиса.
В любом случае, даже с появлением linq запросы на обновление и удаление точно так же требовали генерирования SQL каким-либо образом вне Linq.
Т.е., из CRUD linq повлиял только на одну букву.
(и да, я в курсе про остроумное решение с синтаксисом обновления в ORM-библиотеке за авторством IT)
S>Нуу... да. Теоретически можно замутить свой SinglecastDelegate на основе managed function pointer, а в компилятор запилить умение компилировать лямбду в него .
И это был мой второй подход к Exression, буквально через минуту, как увидел указатели на ф-ии.
Но там есть сложность — лямбда может захватывать контекст или нет, т.е. представлять из себя статический метод или экземплярный захваченного контекста.
Делегаты в этом смысле обеспечивают абстракцию.
Делегат хранит адрес целевой ф-ии и знает как надо вызывать эту ф-ию — подставляя значение сохранённого object в кач-ве this или нет.
Это разные вызовы с разной арностью при одинаковой внешней арности делегата.
S>Тогда лёгким манием руки дропаем нынешний код Func<...>, переименовываем SinglecastDelegate<...> в Func<...>, и наслаждаемся.
S>Мультикастами могут быть только Action<...>.
Разве?
Что выведет:
Func<int> f1 = () => 42;
Func<int> f2 = () => 43;
Func<int> f3 = (Func<int>)Delegate.Combine(f1, f2);
WriteLine(f3());
?
V>>Если некая контора отпустила некий стандарт в свободное плавание, то за каким чёртом у неё остаётся возможность контроллировать дальнейшее развитие этого стандарта?
V>>Сюрр...
S>Свободное плавание явы началось только в ноябре 2006.
В смысле, заопенсорсили реализацию?
Я про стандарт языка говорил.
Java Community Process был создан в 90-е, стандарт на язык был опубликован тогда же.
Но нельзя присвоить опубликованный стандарт языка, если нет патента.
А патент на язык не дадут.
Любой может пользоваться стандартом, форкать в своих интересах на своё усмотрение и т.д.
Это личное дело субъекта предпринимательства.
Т.е., юридической основы для иска не было.
V>>Я же отслеживаю фичи, обсуждения, расставляемые приоритеты и как вообще принимается решения о назначении приоритетов.
V>>Сейчас фичи включаются в релизы по мере фактической готовности, а приоритеты расставляются исходя из того, есть кому заниматься такой-то задачей или нет.
S>Это вы сейчас про свою секретную компанию, или про дотнет?
Про дотнет.
В нашей компании всё стандартно — ресурсы перекидываются по велению руководства.
S>Если про дотнет, то мы оба неправы.
S>Исходно локальные функции прекрасно работали в Expression Trees, и там захватывался ровно mangled method name — всё, как вы хотели.
S>Вот pull request, который это изменил: https://github.com/dotnet/roslyn/pull/3849
S>Не было никаких комитетов и обсуждения "добавить их в expression builder или нет", не было оценок стоимости, полезности, и движения в бэклоге.
S>Не было никаких "нам сложно объяснять, почему статик можно, а нестатик нельзя" — было можно оба.
В случае нестатик возможны неоднозначности, которые непонятно как решать.
Например, без локальных ф-ий происходящее очевидно:
var expressions = new List<Expression<Func<int>>>();
for(var i = 0; i < 4; i++)
expressions.Add(() => i);
expressions.ForEach(e => Console.WriteLine(e.Compile()()));
Выведет
4
4
4
4
О захвате мутабельной переменной i компилятор честно выдаст warning при компиляции.
Но локальная ф-ия может скрыть свою мутабельную природу.
А как обеспечить чистоту функций на уровне языка — непонятно.
S>Просто конкретная Эшли Хаук решила, что "References to local functions are now disallowed in expression trees, which may or may not change in the future (Previously they were generated as a reference to a mangled method name, which seemed wrong)".
S>Почему wrong? Да потому, что "local functions in general are bad" (смотреть обсуждение PR). Всё. Это reason enough.
Про локальные я полностью согласен — это непредсказуемая дичь в случае Expression и обычных делегатов, т.к. не всегда очевидно, что именно захватывается и где, т.к. таких локальных ф-ий может быть несколько, но они шарят общий контекст.
Но статические локальные ф-ии чисты относительно контекста, т.е. не подменяют значений и ссылок локальных переменных.
V>>А в эту область (exression и прочий сахар) разработки нужны люди навроде тебя, любящие дотнет в его исходной парадигме, чтобы холили и лелеяли такой взгляд на вещи в платформе, усиливали своим вкладом те самые моменты.
V>>Но сейчас там задают тон люди, не принявшие исходную парадигму, т.е. твои "природные дотнетные враги", навроде меня. ))
S>И это тоже выглядит неверным. Я вот пока не понимаю, почему де Смет не делает Pull Request. Уже больше года, как поддержка всего на свете в Expression готова.
Может, понимает, что не пройдёт.
Или видит недостаточный приоритет этой задаче.
Разобрать серьезный PR — это лужу перешагнуть.
У нас на работе как начинаю разбирать... Иногда ловишь себя на мысли, что быстрее было самому сделать чем тщательно объяснять десяток одновременно участвующих тонкостей.
А в его коде этих тонкостей сотни.
Это нужна приличная команда для верификации такого PR, которая будет много дней разбирать его код.
Re[82]: MS забило на дотнет. Питону - да, сишарпу - нет?
Здравствуйте, Sinclair, Вы писали:
V>>Облом было ради такой задачи возиться аж с опкодами.
S>С какими ещё опкодами?
S>Во-первых, там внутри — dynamicMethod. https://stackoverflow.com/questions/43041190/do-compiled-expression-trees-leak
S>Во-вторых, даже если бы его там не было, то достаточно самому состряпать DynamicMethod и отдать его в Expression.CompileToMethod().
Если я сказал, что с выходом Expression посмотрел на возможность построения альтернативных Expression (т.е. неких своих), то как на момент их разработки я мог взять Expression и DynamicMethod?
И какие плюшки, кроме ощущения причастности к новизне, должно было дать переписывание готового кода на более тяжеловесную технологию?
V>>Как можно желать того, о чём не в курсе? ))
S>Аффект — это от английского affect = "to act on, to change something".
В том контексте оно означало "задевает, имеет отношение, касается".
Вот я и спрашиваю, как меня может задевать отсутствие некоей функциональности, о потенциальном наличии которой я даже не догадываюсь?
А в случае отсутствия поддержки статических локальных методов — догадываюсь, меня это касается. ))
S>Речь не о том, что кто-то из пользователей чего-то хотел. А о том, что миллионы людей страдали, описывая SQL в строковых константах.
Ну, у нас когда-то был свой query builder, недалеко от методов-расширений Linq уехало.
Но без поддержки query-синтаксиса.
В любом случае, даже с появлением linq запросы на обновление и удаление точно так же требовали генерирования SQL каким-либо образом вне Linq.
Т.е., из CRUD linq повлиял только на одну букву.
(и да, я в курсе про остроумное решение с синтаксисом обновления в ORM-библиотеке за авторством IT)
S>Нуу... да. Теоретически можно замутить свой SinglecastDelegate на основе managed function pointer, а в компилятор запилить умение компилировать лямбду в него .
И это был мой второй подход к Exression, буквально через минуту, как увидел указатели на ф-ии.
Но там есть сложность — лямбда может захватывать контекст или нет, т.е. представлять из себя статический метод или экземплярный захваченного контекста.
Делегаты в этом смысле обеспечивают абстракцию.
Делегат хранит адрес целевой ф-ии и знает как надо вызывать эту ф-ию — подставляя значение сохранённого object в кач-ве this или нет.
Это разные вызовы с разной арностью при одинаковой внешней арности делегата.
S>Тогда лёгким манием руки дропаем нынешний код Func<...>, переименовываем SinglecastDelegate<...> в Func<...>, и наслаждаемся.
S>Мультикастами могут быть только Action<...>.
Разве?
Что выведет:
?
V>>Если некая контора отпустила некий стандарт в свободное плавание, то за каким чёртом у неё остаётся возможность контроллировать дальнейшее развитие этого стандарта?
V>>Сюрр...
S>Свободное плавание явы началось только в ноябре 2006.
В смысле, заопенсорсили реализацию?
Я про стандарт языка говорил.
Java Community Process был создан в 90-е, стандарт на язык был опубликован тогда же.
Но нельзя присвоить опубликованный стандарт языка, если нет патента.
А патент на язык не дадут.
Любой может пользоваться стандартом, форкать в своих интересах на своё усмотрение и т.д.
Это личное дело субъекта предпринимательства.
Т.е., юридической основы для иска не было.
V>>Я же отслеживаю фичи, обсуждения, расставляемые приоритеты и как вообще принимается решения о назначении приоритетов.
V>>Сейчас фичи включаются в релизы по мере фактической готовности, а приоритеты расставляются исходя из того, есть кому заниматься такой-то задачей или нет.
S>Это вы сейчас про свою секретную компанию, или про дотнет?
Про дотнет.
В нашей компании всё стандартно — ресурсы перекидываются по велению руководства.
S>Если про дотнет, то мы оба неправы.
S>Исходно локальные функции прекрасно работали в Expression Trees, и там захватывался ровно mangled method name — всё, как вы хотели.
S>Вот pull request, который это изменил: https://github.com/dotnet/roslyn/pull/3849
S>Не было никаких комитетов и обсуждения "добавить их в expression builder или нет", не было оценок стоимости, полезности, и движения в бэклоге.
S>Не было никаких "нам сложно объяснять, почему статик можно, а нестатик нельзя" — было можно оба.
В случае нестатик возможны неоднозначности, которые непонятно как решать.
Например, без локальных ф-ий происходящее очевидно:
Выведет
О захвате мутабельной переменной i компилятор честно выдаст warning при компиляции.
Но локальная ф-ия может скрыть свою мутабельную природу.
А как обеспечить чистоту функций на уровне языка — непонятно.
S>Просто конкретная Эшли Хаук решила, что "References to local functions are now disallowed in expression trees, which may or may not change in the future (Previously they were generated as a reference to a mangled method name, which seemed wrong)".
S>Почему wrong? Да потому, что "local functions in general are bad" (смотреть обсуждение PR). Всё. Это reason enough.
Про локальные я полностью согласен — это непредсказуемая дичь в случае Expression и обычных делегатов, т.к. не всегда очевидно, что именно захватывается и где, т.к. таких локальных ф-ий может быть несколько, но они шарят общий контекст.
Но статические локальные ф-ии чисты относительно контекста, т.е. не подменяют значений и ссылок локальных переменных.
V>>А в эту область (exression и прочий сахар) разработки нужны люди навроде тебя, любящие дотнет в его исходной парадигме, чтобы холили и лелеяли такой взгляд на вещи в платформе, усиливали своим вкладом те самые моменты.
V>>Но сейчас там задают тон люди, не принявшие исходную парадигму, т.е. твои "природные дотнетные враги", навроде меня. ))
S>И это тоже выглядит неверным. Я вот пока не понимаю, почему де Смет не делает Pull Request. Уже больше года, как поддержка всего на свете в Expression готова.
Может, понимает, что не пройдёт.
Или видит недостаточный приоритет этой задаче.
Разобрать серьезный PR — это не лужу перешагнуть.
У нас на работе как начинаю разбирать... Иногда ловишь себя на мысли, что быстрее было самому сделать чем тщательно объяснять десяток одновременно участвующих тонкостей.
А в его коде этих тонкостей сотни.
Это нужна приличная команда для верификации такого PR, которая будет много дней разбирать его код.
V>>Облом было ради такой задачи возиться аж с опкодами.
S>С какими ещё опкодами?
S>Во-первых, там внутри — dynamicMethod. https://stackoverflow.com/questions/43041190/do-compiled-expression-trees-leak
S>Во-вторых, даже если бы его там не было, то достаточно самому состряпать DynamicMethod и отдать его в Expression.CompileToMethod().
Если я сказал, что с выходом Expression посмотрел на возможность построения альтернативных Expression (т.е. неких своих), то как на момент их разработки я мог взять Expression и DynamicMethod?
И какие плюшки, кроме ощущения причастности к новизне, должно было дать переписывание готового кода на более тяжеловесную технологию?
V>>Как можно желать того, о чём не в курсе? ))
S>Аффект — это от английского affect = "to act on, to change something".
В том контексте оно означало "задевает, имеет отношение, касается".
Вот я и спрашиваю, как меня может задевать отсутствие некоей функциональности, о потенциальном наличии которой я даже не догадываюсь?
А в случае отсутствия поддержки статических локальных методов — догадываюсь, меня это касается. ))
S>Речь не о том, что кто-то из пользователей чего-то хотел. А о том, что миллионы людей страдали, описывая SQL в строковых константах.
Ну, у нас когда-то был свой query builder, недалеко от методов-расширений Linq уехало.
Но без поддержки query-синтаксиса.
В любом случае, даже с появлением linq запросы на обновление и удаление точно так же требовали генерирования SQL каким-либо образом вне Linq.
Т.е., из CRUD linq повлиял только на одну букву.
(и да, я в курсе про остроумное решение с синтаксисом обновления в ORM-библиотеке за авторством IT)
S>Нуу... да. Теоретически можно замутить свой SinglecastDelegate на основе managed function pointer, а в компилятор запилить умение компилировать лямбду в него .
И это был мой второй подход к Exression, буквально через минуту, как увидел указатели на ф-ии.
Но там есть сложность — лямбда может захватывать контекст или нет, т.е. представлять из себя статический метод или экземплярный захваченного контекста.
Делегаты в этом смысле обеспечивают абстракцию.
Делегат хранит адрес целевой ф-ии и знает как надо вызывать эту ф-ию — подставляя значение сохранённого object в кач-ве this или нет.
Это разные вызовы с разной арностью при одинаковой внешней арности делегата.
S>Тогда лёгким манием руки дропаем нынешний код Func<...>, переименовываем SinglecastDelegate<...> в Func<...>, и наслаждаемся.
S>Мультикастами могут быть только Action<...>.
Разве?
Что выведет:
Func<int> f1 = () => 42;
Func<int> f2 = () => 43;
Func<int> f3 = (Func<int>)Delegate.Combine(f1, f2);
WriteLine(f3());
?
V>>Если некая контора отпустила некий стандарт в свободное плавание, то за каким чёртом у неё остаётся возможность контроллировать дальнейшее развитие этого стандарта?
V>>Сюрр...
S>Свободное плавание явы началось только в ноябре 2006.
В смысле, заопенсорсили реализацию?
Я про стандарт языка говорил.
Java Community Process был создан в 90-е, стандарт на язык был опубликован тогда же.
Но нельзя присвоить опубликованный стандарт языка, если нет патента.
А патент на язык не дадут.
Любой может пользоваться стандартом, форкать в своих интересах на своё усмотрение и т.д.
Это личное дело субъекта предпринимательства.
Т.е., юридической основы для иска не было.
V>>Я же отслеживаю фичи, обсуждения, расставляемые приоритеты и как вообще принимается решения о назначении приоритетов.
V>>Сейчас фичи включаются в релизы по мере фактической готовности, а приоритеты расставляются исходя из того, есть кому заниматься такой-то задачей или нет.
S>Это вы сейчас про свою секретную компанию, или про дотнет?
Про дотнет.
В нашей компании всё стандартно — ресурсы перекидываются по велению руководства.
S>Если про дотнет, то мы оба неправы.
S>Исходно локальные функции прекрасно работали в Expression Trees, и там захватывался ровно mangled method name — всё, как вы хотели.
S>Вот pull request, который это изменил: https://github.com/dotnet/roslyn/pull/3849
S>Не было никаких комитетов и обсуждения "добавить их в expression builder или нет", не было оценок стоимости, полезности, и движения в бэклоге.
S>Не было никаких "нам сложно объяснять, почему статик можно, а нестатик нельзя" — было можно оба.
В случае нестатик возможны неоднозначности, которые непонятно как решать.
Например, без локальных ф-ий происходящее очевидно:
var expressions = new List<Expression<Func<int>>>();
for(var i = 0; i < 4; i++)
expressions.Add(() => i);
expressions.ForEach(e => Console.WriteLine(e.Compile()()));
Выведет
4
4
4
4
О захвате мутабельной переменной i компилятор честно выдаст warning при компиляции.
Но локальная ф-ия может скрыть свою мутабельную природу.
А как обеспечить чистоту функций на уровне языка — непонятно.
S>Просто конкретная Эшли Хаук решила, что "References to local functions are now disallowed in expression trees, which may or may not change in the future (Previously they were generated as a reference to a mangled method name, which seemed wrong)".
S>Почему wrong? Да потому, что "local functions in general are bad" (смотреть обсуждение PR). Всё. Это reason enough.
Про локальные я полностью согласен — это непредсказуемая дичь в случае Expression и обычных делегатов, т.к. не всегда очевидно, что именно захватывается и где, т.к. таких локальных ф-ий может быть несколько, но они шарят общий контекст.
Но статические локальные ф-ии чисты относительно контекста, т.е. не подменяют значений и ссылок локальных переменных.
V>>А в эту область (exression и прочий сахар) разработки нужны люди навроде тебя, любящие дотнет в его исходной парадигме, чтобы холили и лелеяли такой взгляд на вещи в платформе, усиливали своим вкладом те самые моменты.
V>>Но сейчас там задают тон люди, не принявшие исходную парадигму, т.е. твои "природные дотнетные враги", навроде меня. ))
S>И это тоже выглядит неверным. Я вот пока не понимаю, почему де Смет не делает Pull Request. Уже больше года, как поддержка всего на свете в Expression готова.
Может, понимает, что не пройдёт.
Или видит недостаточный приоритет этой задаче.
Разобрать серьезный PR — это не лужу перешагнуть.
У нас на работе как начинаю разбирать... Иногда ловишь себя на мысли, что быстрее было самому сделать чем тщательно объяснять десяток одновременно участвующих тонкостей.
А в его коде этих тонкостей сотни.
Это нужна приличная команда для верификации такого PR, которая будет много дней разбирать его код.