պլհկ
https://play.rust-lang.org/?gist=91eca76d3edb701387f7ce26aae66b14&version=stable
պլհկ
https://github.com/rust-lang/rust/issues/10184 найс
Loo
Loo
безопасный раст говорили они
Loo
всё
Loo
переходим на го
Vlad
На kotlin
Маjко
Как так?(
Маjко
А, это сарказм
Маjко
Я уж думал купибилет на го перекатываются
Loo
պլհկ
tmp/sandbox730493441/main.go:8:43: constant 104000000000000000 overflows uint8
պլհկ
Loo
лол
պլհկ
в го все работает
պլհկ
package main import ( "fmt" ) func main() { var x float32 = 1.04E+17 fmt.Printf("Hello, playground %v\n", uint8(x)) }
Маjко
Надо просто делать свой оптимизирующий компилятор, а то от этого LLVM одни UB
Маjко
(нет)
պլհկ
кретин же есть
պլհկ
// cretonne
Маjко
а
Евгений
А gnu rust compiler не планируется?
պլհկ
нет
Маjко
У раста нет спецификации языка
Маjко
кретин же есть
Я чет не нашел из чего он код генерит.
Маjко
А, там свой IR язык
Маjко
IL*
Маjко
https://cretonne.readthedocs.io/en/latest/langref.html
պլհկ
У раста нет спецификации языка
не помешало написать компилятор на с++
Маjко
Я компилер хэлловорлдов тоже могу за пару месяцев написать)
Евгений
А, там свой IR язык
Интересно чем им LLVM'овский не понравился
Маjко
Интересно чем им LLVM'овский не понравился
https://cretonne.readthedocs.io/en/latest/compare-llvm.html
պլհկ
Compiles rustc that can compile the standard library and "hello, world"
ivan
https://intellij-rust.github.io/2017/10/09/changelog-54.html
ну когда уже появится поддержка Deref coercions...
պլհկ
rustc == hello world, ок лан
Евгений
Vlad
Уже полгода как
ivan
А их типа нет что ль?
чет типы не везде выводит
Vlad
чет типы не везде выводит
Не все, но уже почти все
Маjко
Compiles rustc that can compile the standard library and "hello, world"
Ну то есть мой код он скомпилить пока не может. Я не вижу по крайней мере на гитхабе у них как собрать что-то кроме rustc
ivan
относительно пол года назад — прогресс огромный. но местами ещё больно.
Vlad
ну когда уже появится поддержка Deref coercions...
Так о чем тогда это сообщение вообще?
ivan
да так, поныть же надо
Vlad
Не надо
Vlad
Я вывод типов пилю
Vlad
Полгода
Vlad
Поной мне тут
Vlad
=D
Маjко
Раз уж такая пьянка
Маjко
@vlad20012 почему вы пилите свой компилятор, вместо использования rls или rustc. В отличии от Java и C++, для которых это актуально и по сути единственный вариант получить семантическое представление, rustc это семантическое представление дает (HIR, MIR)
Vlad
Во-первых, там используется save-analysis, т.е. сначала проект компилится полностью, часть внутренних структур данных компилятора дампается, и по ним уже RLS лазит. Что тут плохого - проект нужно полностью перекомпилировать при любом изменении, чтоб RLS'ом получить актуальные данные, и это охренеть как долго. Мб инкрементальная компиляция поможет, но это и есть одно из тех самых "изменений архитектуры", что необходимы RLS. И пилят это довольно долго. И все равно это будет медленно, пока save-analysis не отпилят полностью. Во-вторых, компилятор очень плохо работает с кодом, который не компилится. Если поломан синтакисис - то вообще giving up. Это причина, почему в RLS комплишен до сих пор через racer, ибо комплишн - это почти всегда "поломанный синтаксис". У нас с самого начала все пилится с учетом IDE'шных требований. Парсер умеет восстанавливаться на поломанном синтаксисе, типы нормально выводятся на незавершенных выражениях, и т.п. Ну и перфоманс - компилится только открытая в IDE вкладка. Зачем весь проект компилить? Ну и подобным подходам уже с десяток лет, в остальных JetBrains IDE примерно так же все работает. И практически для всех языков мы заново компилятор писали. Исключения я пока 2 знаю - это, во-первых, kotlin (для которого мы сами компилятор и писали, лол), во-вторых C#. С C# близко не знаком, хз как так вышло
Маjко
👍
Anonymous
лол
Anonymous
Во-первых, там используется save-analysis, т.е. сначала проект компилится полностью, часть внутренних структур данных компилятора дампается, и по ним уже RLS лазит. Что тут плохого - проект нужно полностью перекомпилировать при любом изменении, чтоб RLS'ом получить актуальные данные, и это охренеть как долго. Мб инкрементальная компиляция поможет, но это и есть одно из тех самых "изменений архитектуры", что необходимы RLS. И пилят это довольно долго. И все равно это будет медленно, пока save-analysis не отпилят полностью. Во-вторых, компилятор очень плохо работает с кодом, который не компилится. Если поломан синтакисис - то вообще giving up. Это причина, почему в RLS комплишен до сих пор через racer, ибо комплишн - это почти всегда "поломанный синтаксис". У нас с самого начала все пилится с учетом IDE'шных требований. Парсер умеет восстанавливаться на поломанном синтаксисе, типы нормально выводятся на незавершенных выражениях, и т.п. Ну и перфоманс - компилится только открытая в IDE вкладка. Зачем весь проект компилить? Ну и подобным подходам уже с десяток лет, в остальных JetBrains IDE примерно так же все работает. И практически для всех языков мы заново компилятор писали. Исключения я пока 2 знаю - это, во-первых, kotlin (для которого мы сами компилятор и писали, лол), во-вторых C#. С C# близко не знаком, хз как так вышло
почему не контрибьютить в их проект тогда
Anonymous
так быстрее и продуктивнее для всех
Filipp
А это есть отдельным пунктом в доке intellij-rust?
Anonymous
ааа
Маjко
Во-первых, там используется save-analysis, т.е. сначала проект компилится полностью, часть внутренних структур данных компилятора дампается, и по ним уже RLS лазит. Что тут плохого - проект нужно полностью перекомпилировать при любом изменении, чтоб RLS'ом получить актуальные данные, и это охренеть как долго. Мб инкрементальная компиляция поможет, но это и есть одно из тех самых "изменений архитектуры", что необходимы RLS. И пилят это довольно долго. И все равно это будет медленно, пока save-analysis не отпилят полностью. Во-вторых, компилятор очень плохо работает с кодом, который не компилится. Если поломан синтакисис - то вообще giving up. Это причина, почему в RLS комплишен до сих пор через racer, ибо комплишн - это почти всегда "поломанный синтаксис". У нас с самого начала все пилится с учетом IDE'шных требований. Парсер умеет восстанавливаться на поломанном синтаксисе, типы нормально выводятся на незавершенных выражениях, и т.п. Ну и перфоманс - компилится только открытая в IDE вкладка. Зачем весь проект компилить? Ну и подобным подходам уже с десяток лет, в остальных JetBrains IDE примерно так же все работает. И практически для всех языков мы заново компилятор писали. Исключения я пока 2 знаю - это, во-первых, kotlin (для которого мы сами компилятор и писали, лол), во-вторых C#. С C# близко не знаком, хз как так вышло
rls работает довольно шустро, вообще говоря. Он не перекомпиливает всё, только первые пассы делает с проверкой синтаксиса, тайпчеком и borrowck. Аналогично cargo check
Vlad
почему не контрибьютить в их проект тогда
Позже отвечу. С телефона западло :)
Anonymous
ок
պլհկ
а разгадка проста
Anonymous
форварднул себе
պլհկ
потом плагин забросят и выпустят rustland
պլհկ
за $9.99
Loo
за $9.99
просёк фишечку
Loo
да
Loo
Anonymous
кек
Anonymous
вообще эти редакторы от jetbrains обман
Vlad
Фишечку я не понял
Vitaly
Коллеги, а кто может код попинать? Начал про раст читать, написал маленькую утилитку, хотел бы получить фидбэк. https://github.com/dotcypress/pswrd Может есть плохо пахнущие места )
Евгений
Фишечку я не понял
Смысл в том, что вам невыгодно вкладываться в коммьюнити, очевидно же. Чем проще создать редактор с таким же набором функций забесплатно -- тем меньше будет людей, готовых шагнуть в капкан
Vlad
почему не контрибьютить в их проект тогда
Вообще все просто. Не все со мной согласны, но я абсолютно убежден, что написать компилятор заново радикально дешевле (в человекочасах), чем rustc допиливать. У RLS фора была, т.е. они взяли rustc и racer, и вроде как все работать стало. Тепеьр до человеческого состояния они будут лет 5 допиливать, а мы плагин ща вот уже сделаем
Vlad
Да и в JB над плагином работает полтора человека. Над RLS и его поддержкой в rustc очевидно больше, не?
Vlad
потом плагин забросят и выпустят rustland
А, rustland типа маркетинговое название IDE
պլհկ
ну gogland
Vlad
Ну у нас дофига бесплатных плагинов для не особо популярных языков. Scala, groovy