The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Microsoft наймёт разработчиков для переписывания сервисов с C# на Rust, opennews (??), 01-Фев-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


143. "Microsoft наймёт разработчиков для переписывания сервисов с ..."  +/
Сообщение от Аноним (144), 01-Фев-24, 14:18 
Rust `чуть` быстрее по скорости исполнения. Еще в Rust нет гонки по данным, а в C# только у атомарных типов. Но программистов на Rust намного меньше.

Я думаю что, как сказано в новости, переписывать будут `ключевые сервисы` это значит ради одного процента (условно) ускорения и соответствующей безопасности затевается это переписывание серверов office 365.

Ответить | Правка | Наверх | Cообщить модератору

167. "Microsoft наймёт разработчиков для переписывания сервисов с ..."  +2 +/
Сообщение от Аноним (189), 01-Фев-24, 16:41 
Думаю, что это все же только эксперимент и если что-то пойдет не так он еще может закончится так же как в Firefox - увольнением основной команды разработки на Rust.
Ответить | Правка | Наверх | Cообщить модератору

238. "Microsoft наймёт разработчиков для переписывания сервисов с ..."  +/
Сообщение от penetrator (?), 01-Фев-24, 20:47 
> Еще в Rust нет гонки по данным, а в C# только у атомарных типов.

разверни мысль

Ответить | Правка | К родителю #143 | Наверх | Cообщить модератору

257. "Microsoft наймёт разработчиков для переписывания сервисов с ..."  +1 +/
Сообщение от Аноним (144), 01-Фев-24, 23:20 
Гонка данных.
https://intuit.ru/studies/courses/10554/1092/lecture/27095&#...

В Rust нет гонки по данным в safe коде. https://doc.rust-lang.org/nomicon/races.html

В C# эта гарантия дается только для атомарных типов. https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...

Ответить | Правка | Наверх | Cообщить модератору

258. "Microsoft наймёт разработчиков для переписывания сервисов с ..."  +1 +/
Сообщение от Аноним (144), 01-Фев-24, 23:31 
Чем мне это нравится в Раст, это что ты можешь использовать любую библиотеку в своем многопоточном коде, не боясь что она что-то там перезапишет, потому что не написана с учетом того, что будет использоваться из нескольких потоков. Тебе не надо читать весь её код, а можно просто использовать. И компилятор будет ругаться что библиотека Х, которую ты используешь, в свою очередь использует библиотеку Y, которая имеет тип, который не имплементирует трейт Sync. А значит его использовать в твоем многопотоке unsafe.

Либо копируй свои данные, либо оборачивай в потокобезопасную обертку, либо проси автора той либы о рефакторинге кода. Ну или сам копируй крейт и переделывай под себя.

То есть ты получаешь ошибку стадии компиляции, вместо неопределенного поведения (UB) в рантайме.

Ответить | Правка | К родителю #238 | Наверх | Cообщить модератору

286. "Microsoft наймёт разработчиков для переписывания сервисов с ..."  +/
Сообщение от penetrator (?), 02-Фев-24, 06:21 
> который не имплементирует трейт Sync. А значит его использовать в твоем многопотоке unsafe.

во теперь понятно

thread-safe типы отмечены в шарпе в доках, обычно это все статические члены, или специальные классы вроде ConcurrentBag

прикол в том что я тестировал скороcть межпоточной синхронизации vs создание экземпляра на большом числе итераций

межпоточная синхронизация оказалась медленнее раза в два, т.е. создать объект свой для каждого потока дешевле, чем обращаться к единственному экземпляру (синглтону) и даже дешевле, чем использовать thread-local объект

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

P.S. не thread-safe объект - это не UB, это вполне defined behaviour, в котором доступ к одной и той же переменной будет осуществляться в порядке переключения потоков на CPU, который ты не контролируешь разумеется, и который заранее неизвестен, отсюда вся межпоточная синхронизация, которая в расте как я понял встроена, если есть трейт Sync

Ответить | Правка | Наверх | Cообщить модератору

338. "Microsoft наймёт разработчиков для переписывания сервисов с ..."  +/
Сообщение от Аноним (144), 02-Фев-24, 21:01 
В расте трейты Sync и Send - маркер трейты. Их можно объявить для типа. Они не требуют реализации, а просто являются указателем компилятору что программист подумал о том, как будут вести себя объекты этого типа (для которого объявлен этот трейт) при одновременном доступе из разных потоков. Их объявление над типом это unsafe операция. Они реализованы для стандартных примитивов синхронизации, чтобы программист случайным образом не смог передать в другой поток то, что туда передавать не следует.

Вот по этой диаграмме наверно проще понять https://cheats.rs/#thread-safety

В целом, тут никакой магии нет, как думают многие про раст. Будто можно обмануть архитектуру фон неймана и получить оттуда лишних попугаев. Просто компилятор показывает что делать нельзя, иначе будет бобо. Но если хочешь, ему надо об этом сообщить разными способами. И это можно потом grep'ать, чтобы сузить места поиска ошибки. Или для удобного code review

Про C# меня сильно удивила вот эта статья https://devblogs.microsoft.com/dotnet/performance-improvemen...
в частности Dynamic PGO - чего в компилируемых языках нету и неизвестно когда будет.
и Native AOT - возможность запускаться без всего .NET, а только таскать за собой то что надо для работы.

Представляю, чего можно достичь если это продолжить полировать.

Ответить | Правка | Наверх | Cообщить модератору

405. "Microsoft наймёт разработчиков для переписывания сервисов с ..."  +/
Сообщение от penetrator (?), 04-Фев-24, 07:31 
погоди, т.е. ты помечаешь объект трейтом Sync тем самым говоря, что контракт твоего объект потокобезопасный?

т.е. например вместо Insert у тебя TryInsert? и вся межпоточная реализация уже есть в этом методе?

так тогда ничего не меняется по отношению к тому, что я писал в прошлом сообщении - делать потокобезопасным каждый объект довольно глупая затея, и затратная и по ресурсам железа и по времени разработки

-------

тебе не лень было читать всю статью? )) для меня это ну совсем многабукаф

Native AOT кстати уже давно известная фишка дотнета и уже было доступна в 7 с большими ограничениями

но даже в 8 осталось вот это: Assembly.Location - Returns an empty string.

с определенными костылями типа AppContext.BaseDirectory это можно обойти

в общем костыли костыли костыли, я хрен клал на микрооптимизации, и на хайп тоже клак )))
мне главное чтобы платформа не была ущербной

Ответить | Правка | Наверх | Cообщить модератору

400. "Microsoft наймёт разработчиков для переписывания сервисов с ..."  +/
Сообщение от Аноним (366), 04-Фев-24, 04:52 
> Rust `чуть` быстрее по скорости исполнения.

У него GC нет. И виртуалок. Это сразу означает намного менее монструозную конструкцию.

> Но программистов на Rust намного меньше.

Тем хуже для дотнетчиков - есть куда падать.

> Я думаю что, как сказано в новости, переписывать будут `ключевые сервисы`

А потом и все остальное. Зря чтоли нанимали?!

> это значит ради одного процента (условно) ускорения и соответствующей
> безопасности затевается это переписывание серверов office 365.

Врядли там 1% будет. Выпиливание GC и всех его проблем - вместе с виртуалками, jit и прочим aot избавит от дохрена проблем на серверах одним чихом. До чего же приятно видеть вынос дотнетчиков в легаси.

Ответить | Правка | К родителю #143 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру