Vlad
Во-первых, там используется save-analysis, т.е. сначала проект компилится полностью, часть внутренних структур данных компилятора дампается, и по ним уже RLS лазит. Что тут плохого - проект нужно полностью перекомпилировать при любом изменении, чтоб RLS'ом получить актуальные данные, и это охренеть как долго. Мб инкрементальная компиляция поможет, но это и есть одно из тех самых "изменений архитектуры", что необходимы RLS. И пилят это довольно долго. И все равно это будет медленно, пока save-analysis не отпилят полностью.
Во-вторых, компилятор очень плохо работает с кодом, который не компилится. Если поломан синтакисис - то вообще giving up. Это причина, почему в RLS комплишен до сих пор через racer, ибо комплишн - это почти всегда "поломанный синтаксис".
У нас с самого начала все пилится с учетом IDE'шных требований. Парсер умеет восстанавливаться на поломанном синтаксисе, типы нормально выводятся на незавершенных выражениях, и т.п. Ну и перфоманс - компилится только открытая в IDE вкладка. Зачем весь проект компилить? Ну и подобным подходам уже с десяток лет, в остальных JetBrains IDE примерно так же все работает. И практически для всех языков мы заново компилятор писали. Исключения я пока 2 знаю - это, во-первых, kotlin (для которого мы сами компилятор и писали, лол), во-вторых C#. С C# близко не знаком, хз как так вышло
Vlad
Кстати, сам я точно не знаю, но по слухам комплишн у нас уже гораздо лучше, чем в RLS
VCL
@vlad20012 затри ему за идею чо ты
Clion, Idea очень хорошие IDE. Особенно после Qt Creator, Clion очень меня впечатлил.
Но как-то не фешуйно писать свои велосипеды вместо того, чтобы развивать существующие решения.
պլհկ
Vlad
Вообще я допускаю, что как long-term solution идея RLS очень хороша. Просто я не верю, что они ее допилят раньше, чем года через 3
Vlad
Т.е. ну это нужно переписать весь компилятор. Начиная с libsyntax, если что
Vlad
А нам как-то проще свою инфраструктуру использовать для создания компилятора для IDE. Тот же Grammar Kit
ozkriff🇺🇦
конкуренция это обычно хорошо для прогресса :)
Vlad
ozkriff🇺🇦
и тебе привет :) я хоть и болею за RLS, но слежу что крутого мелькает в https://intellij-rust.github.io/thisweek :)
ozkriff🇺🇦
Автодополнение Cargo.toml выглядит удобно, блин: https://i.imgur.com/D7CYVsa.png
Loo
FPConf 2017. Интервью с Денисом Шевченко
https://habrahabr.ru/post/342470/
Vlad
let a: String = Default::default();
Резолвится default на конкретный импл теперь
ozkriff🇺🇦
👍 и правда солидная штука
Crazy
Fearless concurrency in Firefox Quantum
https://blog.rust-lang.org/2017/11/14/Fearless-Concurrency-In-Firefox-Quantum.html
Vladimir
Ilya
Rust & socks5. Кто нибудь сталкивался?
Маjко
https://github.com/tokio-rs/tokio-socks5
Ilya
И спасибо
Маjко
Ну уточняй что недо :)
Маjко
https://docs.rs/socks/0.2.3/socks/struct.Socks5Stream.html
Маjко
Если найдешь реализацию ftp клиента, который принимает Read+Write в качестве стрима
Маjко
То можно пользоваться
Маjко
Ан, нет
Маjко
Есть into_inner() -> TcpStream
Маjко
Так что можно юзать с любым ftp-клиентом по идее
Маjко
Который принимает TcpSocket
Vladimir
тцп сокет из токио
Ilya
Спасибо, покурю
Маjко
тцп сокет из токио
Клиента можно и без токио, асинхронные клиенты в целом почти не упёрлись
Vladimir
Всмысле не уперлось?
Маjко
В прямом.
Vladimir
Что такое прямой смысл в твоей фразе
Маjко
Слишком старый сленг, понял
Маjко
Асинхронные клиенты почти не нужны, они легко заменяются тредпулом или просто загрузкой в отдельном потоке.
Маjко
На клиенте подключений обычно не много
Маjко
И трахаться с токио когда нужно просто скачать файлик с фтп — чутка не целесообразно
Маjко
Другое дело если ты пишешь фтп-сервер
Vladimir
Я вообще думал что там просто тцп стрим из Токио, который по дефолту немного другой. А теперь увидел что они как-то возвращают обычный
Маjко
Во втором крейте вообще нет токио
Vladimir
А тю, это разные крейты
Vladimir
Ты меня обманул короче
Vladimir
Я думал то дока из первого
Маjко
Кстати, недавно видел классный подход: либа-сервер принимает в конвтруктор структуры Server обычные stdlib'овские TcpStream и UdpSocket и сама оборачивает их в токиевкие + свой же ивентлуп
Маjко
В плане API копец удобно
Loo
Маjко
Прости
Маjко
Vladimir
Да, только вопрос, можно ли клонить тцп стрим?
Vladimir
Нельзя
Vladimir
Только через ансейф
Маjко
Маjко
Теоретически))
Vladimir
Ну виндусы не нужны
Vladimir
По этому всё ок
Маjко
Для винды тож есть вариант
Маjко
ПРосто трейт другой
Маjко
Вообще при !Sync почемуб и не дать возможность клонить
Маjко
Не понятно
պլհկ
https://doc.rust-lang.org/std/net/struct.TcpStream.html#method.try_clone
Маjко
Отлично
Маjко
Ток в найтли пока
Маjко
Или...
Маjко
Стоп
Маjко
Че за костыль
Vladimir
Это ж метод
Маjко
А, да, я с TryFrom путаю
Vladimir
Ну типа пока нет трай клона, нужно как-то жить
Маjко
TryClone вообще есть разве как трейт?
Vladimir
Вообще если есть клон, то кидать в токиевский не сильно безопасно
Маjко
Нету
Vladimir
Rfc был
Маjко
Vladimir
Ну ты будешь делать врайты, а тебе непонятные "вудблоки"
Маjко
Потому что может быть гонка на сокете, сам спросил — сам ответил
Vladimir
Ну это понятно
Маjко
Маjко
Но это не большая проблема — это сразу будет видно