Открыт .net или закрыт?
От: Sharov Россия  
Дата: 09.06.23 10:31
Оценка: 3 (1) +1
Здравствуйте.

В вакансиях регулярно пишут про связку C# и линукс, т.е. много где переходят на c#, даже в гос. подрядах.
Сейчас уже вполне классическая связка для компаний это Astra Linux и .net (C#).
Мотивируют это тем, что он типа открыт (open source). В отличие от той же оракловской явы.

Но вот коллега Эйнсток Файр пишет, что нифига подобного:
1)

Никакие они не открытые.
Бутстраппинг компилятора нельзя провести без его бинарной версии,
которая поставляется Микрсофтом.

http://rsdn.org/forum/job/8539806?tree=tree
Автор: Эйнсток Файр
Дата: 08.06.23

2)

S> Разве мс не открыл все?

А что толку, если ты не можешь собрать исходники?

Использование непроверяемого бинарника это гипотетическая угроза безопасности.

И, кстати, некоторые библиотеки открыты, но недолицензированы.
А исходники некоторых утилит (для работы с СУБД например) не открыты

http://rsdn.org/forum/job/8540242?tree=tree
Автор: Эйнсток Файр
Дата: 08.06.23


В общем, открыт C# или нет? Можно будет собрать компилятор из открытых исходников или для этого
нужен недоступный бинарь от мс? Что-то я запутался. Как сейчас дела обстоят?
Кодом людям нужно помогать!
Re: Открыт .net или закрыт?
От: Shmj Ниоткуда  
Дата: 09.06.23 11:17
Оценка: 6 (1)
Здравствуйте, Sharov, Вы писали:

S>В общем, открыт C# или нет? Можно будет собрать компилятор из открытых исходников или для этого

S>нужен недоступный бинарь от мс? Что-то я запутался. Как сейчас дела обстоят?

https://github.com/dotnet/roslyn

— компилятор открыт, но его исходники написаны на C# и VB.NET. А чтобы их скомпилировать, нужен другой какой-то компилятор, но где его взять, если вы хотите использовать все изначально открытое?

Но на мой взгляд проблема надумана.
Отредактировано 09.06.2023 11:17 Shmj . Предыдущая версия .
Re: Открыт .net или закрыт?
От: · Великобритания  
Дата: 09.06.23 11:27
Оценка: 6 (1) +2
Здравствуйте, Sharov, Вы писали:

S>В отличие от той же оракловской явы.

Ерунда какая-то. Оракловская ява — это OpenJDK (который полностью открыт) плюс официальная поддержка от Oracle. Плюс есть есть несколько имплементаций и сборок от разных вендоров, даже есть что-то российское с сертификатами https://astralinux.ru/ready-for-software/liberica-jdk/
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Virtual Monolithic Repository
От: Qbit86 Кипр
Дата: 09.06.23 15:40
Оценка: 23 (2) -1
Здравствуйте, Sharov, Вы писали:

S>Открыт .net или закрыт?


Открыт.

S>Но вот коллега Эйнсток Файр пишет, что нифига подобного:

S>

S>Никакие они не открытые.
S>Бутстраппинг компилятора нельзя провести без его бинарной версии,
S>которая поставляется Микрсофтом.


Для того, чтобы иметь возможность быть включёнными в дистрибутивы Linux (которые требуют возможность скомпилировать всё с нуля из исходников), Microsoft заэкранировали исходники в Virtual Monolithic Repository.

Goals of the Virtual Monolithic Repository
Fulfill requirements of .NET distro builders such as RedHat or Canonical to natively include .NET in their distribution repositories.
https://github.com/dotnet/announcements/issues/241

Грубо говоря, процесс выглядит как-то так: с помощью поставляемого через SDK компилятора C# ты компилируешь компилятор C# из исходников, потом этим самостоятельно собранным компилятором C# ты компилируешь весь дотнет включая опять же компилятор C#.
Глаза у меня добрые, но рубашка — смирительная!
Re: Открыт .net или закрыт?
От: karbofos42 Россия  
Дата: 09.06.23 17:39
Оценка: 7 (1) +1
Здравствуйте, Sharov, Вы писали:

S>В вакансиях регулярно пишут про связку C# и линукс, т.е. много где переходят на c#, даже в гос. подрядах.

S>Сейчас уже вполне классическая связка для компаний это Astra Linux и .net (C#).

Учитывая, что есть даже .NET 3.1 под Эльбрусы: https://www.altlinux.org/%D0%AD%D0%BB%D1%8C%D0%B1%D1%80%D1%83%D1%81/dotnet
думаю, что всё же открытый.
Я за все годы объявленного импортозамещения так и не увидел официальных рекомендаций по инструментам.
Даже сейчас до смешного доходит в рамках одной организации.
На совещании по одному проекту рассматривают всякие Java, Ruby , ещё что-то там, а C# отметают со словами, что это же Майкрософт (люди банально не знают, что давно есть рантайм под Linux и не прибито всё к винде).
Параллельно с этим другой проект переводится с ASP .NET на ASP .NET Core и соответственно с .NET Framework на .NET
(не представляю как его можно перевести за год с C# на Java или ещё что, т.к. даже внутри языка этот переход достаточно болезненно проходит).
Re[2]: Virtual Monolithic Repository
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 09.06.23 18:08
Оценка: +1 -1
Q> с помощью поставляемого через SDK компилятора C# ты компилируешь компилятор C# из исходников, потом этим самостоятельно собранным компилятором C# ты компилируешь весь дотнет включая опять же компилятор C#.

Это ничего не гарантирует. В исходном бинарнике компилятора может быть зловред, он будет попадать во все следующие собираемые компиляторы, и бинарно всё будет совпадать.

То есть недостататочно побайтового сравнения результата компиляции. Требуется полный анализ бинарного кода.
Отредактировано 09.06.2023 18:10 Эйнсток Файр . Предыдущая версия . Еще …
Отредактировано 09.06.2023 18:09 Эйнсток Файр . Предыдущая версия .
Re[2]: Открыт .net или закрыт?
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 09.06.23 18:12
Оценка:
K> люди банально не знают, что давно есть рантайм под Linux и не прибито всё к винде

Ага, только WPF через жо.. Avalonia.
Re[3]: Virtual Monolithic Repository
От: Qbit86 Кипр
Дата: 09.06.23 19:17
Оценка: +1
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>...он будет попадать во все следующие собираемые компиляторы


Именно компиляторы, или любые производимые бинарники? Он как-то должен детектить, что сбираемая программа — компилятор?

ЭФ>Никакие они не открытые.


Для любого уважающего себя языка хорошим тоном считается писать компилятор на этом же языке. То есть эта процедура [1] — везде одинаковая. По-твоему, никакие языки не открытые?

[1] https://github.com/dotnet/source-build/blob/main/Documentation/bootstrapping-guidelines.md
Глаза у меня добрые, но рубашка — смирительная!
Отредактировано 09.06.2023 19:17 Qbit86 . Предыдущая версия .
Re[4]: Virtual Monolithic Repository
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 09.06.23 19:31
Оценка:
Q> Именно компиляторы, или любые производимые бинарники? Он как-то должен детектить, что сбираемая программа — компилятор?

Он может делать всё что посчитает нужным. Например конкретно в компиляторы вставляться целиком, а в подходящие программы — частями.

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

ЭФ>>Никакие они не открытые.


Q> эта процедура [1] — везде одинаковая. По-твоему, никакие языки не открытые?


можно сделать всю цепочку из исходников,
нижний уровень которой — загрузчик байтов, который вводится с текстового дампа байтов для памяти и байты должны верифицироваться вручную.
(профит здесь в том, что новые версии компилятора не будут менять текст/дамп загрузчика, и его не надо повторно верифицировать)

А если такого нет, то тебе/вам придётся каждую новую версию бинарного компилятора, выкладываемого Микрософтом,
перепроверять по-новой перед использованием.
Отредактировано 09.06.2023 19:57 Эйнсток Файр . Предыдущая версия . Еще …
Отредактировано 09.06.2023 19:56 Эйнсток Файр . Предыдущая версия .
Отредактировано 09.06.2023 19:38 Эйнсток Файр . Предыдущая версия .
Отредактировано 09.06.2023 19:33 Эйнсток Файр . Предыдущая версия .
Re[5]: Virtual Monolithic Repository
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 09.06.23 19:41
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

Про какие компиляторы вы говорите? Про MSIL? Есть JIT и CoreRT
Есть среда выполнения с Jit-ом вот она то и интересна. MSIL можешь проанализировать как и декомпилировать
и солнце б утром не вставало, когда бы не было меня
Re[6]: Virtual Monolithic Repository
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 09.06.23 19:48
Оценка:
S> и CoreRT

Вы искали пакеты, в именах которых есть corert. Были просмотрены комплект(ы) stable, все секции и все архитектуры.

Ничего не найдено


https://packages.debian.org/search?keywords=corert&searchon=names&suite=stable&section=all
Re[3]: Virtual Monolithic Repository
От: IT Россия linq2db.com
Дата: 09.06.23 20:20
Оценка: +1 -1
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>То есть недостататочно побайтового сравнения результата компиляции. Требуется полный анализ бинарного кода.


И такая проверка довольно тривиальна. А теперь подумай, если такое вдруг вскроется, то это будут такие репутационные потери для майкрософт, что возможно даже на .net можно будет ставить крест. Вот оно им надо страдать такой фигнёй, абсолютно ненадёжной по сокрытию следов, сомнительной в части профита и ужасающе разрушительной по последствиям?
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Virtual Monolithic Repository
От: Baiker  
Дата: 09.06.23 21:36
Оценка: -1
Здравствуйте, Эйнсток Файр, Вы писали:

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

ЭФ>То есть недостататочно побайтового сравнения результата компиляции. Требуется полный анализ бинарного кода.

Как ты в ширинку-то рукой залазишь так смело — вдруг там шпион??
Маразм крепчал...
Re[2]: Virtual Monolithic Repository
От: Baiker  
Дата: 09.06.23 21:46
Оценка: 14 (1) -2
Здравствуйте, Qbit86, Вы писали:

Q>Грубо говоря, процесс выглядит как-то так: с помощью поставляемого через SDK компилятора C# ты компилируешь компилятор C# из исходников, потом этим самостоятельно собранным компилятором C# ты компилируешь весь дотнет включая опять же компилятор C#.


Для совсем конченых параноиков (в самом плохом смысле, но котрые считают себя очень умными и въедливыми) есть простой рецепт: поставляется набор:
1. Сорсы минимально необходимого компилятора МНК_сорсы
2. Бинарь МНК

Сорсы проверяются параноиками. Затем МНК канпеляет МНК_сорсы и получает МНК2, который сравнивается с МНК. Если всё совпало — бинарь соответствует сорсам. А далее уже при помощи МНК канпеляется последняя версия компилятора.

Хотя у меня всё ещё большие сомнения, так ли уж открыт дотнет. В нём громадная куча сорсов, причём прибитая к венде. Неужели кто-то прям открыл сорсы 2012 года и сказал "на те, нам не жалко!" Нет, конечно! Как всегда найдутся тухлые отмазки "ну мы типа опенсорсим, только не всё ". А нахрен нам "не всё"?? В нём просто нет смысла — проще Немерлю взять, она гарантированно ВСЯ открытая.
Re[4]: Virtual Monolithic Repository
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 09.06.23 22:46
Оценка:
IT> подумай, если такое вдруг вскроется, то это будут такие репутационные потери для майкрософт, что возможно даже на .net можно будет ставить крест

Это так себе аргумент. Ведь не обязательно зловреда вставлять прямо сейчас, это можно будет сделать позже, когда будет нужно.

Была же компания, которая ломаные шифровальные машинки выпускала? Ну они понесли репутационные потери.
Но клиентам-то уже ущерб мог быть нанесён.

Поэтому только безопасные подходы нужны.

IT> возможно даже на .net можно будет ставить крест.


Это надо сделать сразу прямо сейчас, за то, что они приняли такой подход, который приняли.
Можно подумать, что альтернатив нехватает.
Отредактировано 09.06.2023 22:49 Эйнсток Файр . Предыдущая версия . Еще …
Отредактировано 09.06.2023 22:47 Эйнсток Файр . Предыдущая версия .
Re[3]: Virtual Monolithic Repository
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 09.06.23 22:48
Оценка: +1
B> МНК2, который сравнивается с МНК. Если всё совпало — бинарь соответствует сорсам.

Нет. В этом утверждении логическая ошибка. И был proof of concept компилятора который её демонстрирует.
Это если сравнение по контрольной сумме и размеру. Да даже и если побайтное сравнение — всё равно.
Нужно знать, что именно байты делают не анализом исходников, а анализом бинарника.

А про побайтную проверку смысла я выше
Автор: Эйнсток Файр
Дата: 09.06.23
писал, и там не "минимально необходимый компилятор", а "загрузчик шестнадцатеричного дампа".
Отредактировано 09.06.2023 22:57 Эйнсток Файр . Предыдущая версия . Еще …
Отредактировано 09.06.2023 22:56 Эйнсток Файр . Предыдущая версия .
Отредактировано 09.06.2023 22:55 Эйнсток Файр . Предыдущая версия .
Отредактировано 09.06.2023 22:55 Эйнсток Файр . Предыдущая версия .
Re[5]: Virtual Monolithic Repository
От: pilgrim_ Россия  
Дата: 09.06.23 22:57
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

IT>> подумай, если такое вдруг вскроется, то это будут такие репутационные потери для майкрософт, что возможно даже на .net можно будет ставить крест


ЭФ>Это так себе аргумент. Ведь не обязательно зловреда вставлять прямо сейчас, это можно будет сделать позже, когда будет нужно.


А хоть какому-то open-source ты доверяешь?
Ну напр. компилятору gcc последней версии, который был скомпилирован компилятором предыдущей версии и т.д. до 1-й версии компилятора?
Re[6]: Virtual Monolithic Repository
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 09.06.23 22:59
Оценка:
_> А хоть какому-то open-source ты доверяешь?

Одобряемый мной подход записан здесь
Автор: Эйнсток Файр
Дата: 09.06.23
. Он, в принципе, совпадает с тем, что говорит baiker,
но почему-то Baiker не понимает, что Microsoft этот подход не реализовал.

> Ну напр. компилятору gcc последней версии, который был скомпилирован компилятором предыдущей версии и т.д. до 1-й версии компилятора?


В случае с Си есть компиляторы различных производителей. Можно брать компилятор ФСБ и ничего не боятся.

Можно последовательно прокомпилировать компиляторами разных производителей и снизить вероятность того, что они все сговорились.

С C# так не выйдет.
Отредактировано 09.06.2023 23:05 Эйнсток Файр . Предыдущая версия . Еще …
Отредактировано 09.06.2023 23:02 Эйнсток Файр . Предыдущая версия .
Отредактировано 09.06.2023 23:02 Эйнсток Файр . Предыдущая версия .
Отредактировано 09.06.2023 23:01 Эйнсток Файр . Предыдущая версия .
Отредактировано 09.06.2023 22:59 Эйнсток Файр . Предыдущая версия .
Re[7]: Virtual Monolithic Repository
От: pilgrim_ Россия  
Дата: 09.06.23 23:05
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

ЭФ>В случае с Си есть компиляторы различных производителей. Можно брать компилятор ФСБ и ничего не боятся.


Т.е. некоторое доверие таки есть?

ЭФ>Можно последовательно прокомпилировать компиляторами разных проиизводителей и снизить вероятность того, что они все сговорились.


Как будешь проверять?

ЭФ>С C# так не выйдет.


Mono?

ps: ну и как IT уже сказал, проверка managed кода существенно проще нативного, и его анализ на предмет зловредов вряд-ли сильно сложнее анализа исходников.
Re[8]: Virtual Monolithic Repository
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 09.06.23 23:10
Оценка: +1 -1 :))) :))) :)
_> Т.е. некоторое доверие таки есть?

Это другое! Microsoft — вражеская компания под управлением вражеского правительства и вражеских спецслужб.
Странно было бы не принимать это во внимание.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.