Linker Unsafe – Telegram
Linker Unsafe
220 subscribers
182 photos
24 videos
18 files
859 links
Собираю ржавые и лямбдообразные новости, прикольные цитатки с форумов, ссылки на статьи и всё такое. В-общем, сюда я тащу такие крупицы, которые мне будет жаль потерять в цифровой бездне. Возможно, они покажутся интересными и вам.

Фи сюда: @nlinker
Download Telegram
egoarka:
привет всем кто не спит

код рабочий
вопрос

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=f777b0a65b4fad3cc2cb121eb513a561

можно оптимизировать как - то этот код?
если нет, то больше всего волнует строка 50 - там произойдет полное копирование хешмапа по значению или по ссылке?

Denis:
iter_mut заменяешь на into_iter и таким образом поглащаешь мапу без копирований

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=cf5969b3cfe8edddae0eb5def55f0a3d

many_values тоже можно поглотить

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=1d889711c4769d04b46b79dc3369377b

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=6474aeb38bdfafb96855ce29f4fa44aa

extend принимает любой объект, который реализует IntoIterator, т.е. можно и просто итератор подсунуть, необязательно его перед этим собирать в вектор

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=18fe338e2edf68ba173eea1aa4d79ea2

а, вот ещё в начале заметил .iter().cloned(), можно смело на .into_iter() заменять

[("a".to_string(), "000".to_string())].into_iter() — не работает
vec![("a".to_string(), "000".to_string())].into_iter() — работает

на самом деле совсем правильно было бы использовать https://docs.rs/maplit/1.0.2/maplit/

угу

могу ещё предложить сделать хелпер-функцию fn make_hashmap(slice: &[(&str, &str)]) -> HashMap<String, String>

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fa293aa682e70f000a94f8ba883069e6

https://news.1rj.ru/str/rust_beginners_ru/63350
Nick Linker:
В прод пойдёт всё в куче, один большой WASM-файл.
Динамическая подгрузка здесь выглядит привлекательно, потому что этот маленький wasm кусок хочется пересобирать часто и обновлять быстро. Кроме этого, есть ещё css, который тоже относительно редко меняется, и генерировать для него обёртки тоже не хочется на каждый чих (поэтому такая обёртка будучи сгенерированной один раз могла бы лечь в большой wasm кусок).

lil pep:
я не знаю где лучше всего пример будет

тут есть
https://github.com/jfbastien/musl/blob/wasm-prototype-1/arch/wasm32/wasm.js
но тут не approachable

Mikhail Voronov:
https://github.com/fluencelabs/multi-module-example

lil pep:
кстати, вроде новый инструмент в wabt появился для декомпиляции
https://v8.dev/blog/wasm-decompile

Nick Linker:
В этом multi-module-example какая-то специфичная аннотация, которая к сожалению мне недоступна. Но спасибо, я по-меньшей мере знаю, что это возможно 😊
Ладно, спасибо, буду ковырять дальше.

Mikhail Voronov:
https://github.com/fluencelabs/fce/blob/master/src/vm/module/abi.rs#L19
там макросы скрывают всю грязную работу, вот по этой ссылке можно почитать, что происходит.
P.S. Код там пока очень сырой

https://news.1rj.ru/str/WebAssembly_ru/29934
Forwarded from Kai Ren
Кстати, у меня тут на днях талантливый коллега изобрёл приём (может и не ново, хз), дабы не писать килотонны трейт-баундов на всяких impl'ах: весь ужас запихиваем во вспомогательный трейт, и просто переиспользеум через ассоциативные типчики.
Подбиваю его проработать идею глубже и запилить статейку по этому делу, но пока что морозится.
Бешеный Профессор:
И так факты - получил ты ссылку на какие-то данные в метод или функцию. Изменил их. Без ссылочной прозрачности характерной для ФП ещё кто-то может изменить по ссылке как-то по другому эти данные. Если это происходит в многопоточном окружении это может произойти еще и пока твой метод выполняется. В общем то можно хоро и без ссылочной прозрачности писать но это писец каких затрат сил и бойлерплейта требует. Вот эти все IRepository и прочее это же для того чтобы ты точно знал что вот сейчас будет запись в базу а не в какой-то непонятный момент ты выставил значение свойству и тут бабах

В ФП ссылочно прозрачном языке бабах произойти в принцыпе не должно. Ты явно видишь все места где у тебя IO и где ты в него пишешь. Хотя, это такое - я не силён в ФП. Я волшебник в другом а в ФП я толко учусь. Вон наш любимый Цобакен @DogeShibu может тебе рассказать наверно почему ссылочная прозрачность это хорош 😁

https://news.1rj.ru/str/rust_offtopic/246945
Forwarded from hirrolot
Forwarded from hirrolot
Forwarded from Stanislav Popov
реально кажется ух вот в питонке все красиво, типы нинужны
Hirrolot:
типы засоряют код в расте

F: Fn() -> Fut, Fut: Future<Output = ()>

типика лкод

можно было бы так записать: async Fn()
Forwarded from PLComp
Programming Paradigms for Dummies: What Every Programmer Should Know
Ликбез по основным принципам ЯП: классификация, вопросы представления состояния, конкурентности и параллелизма.
https://www.info.ucl.ac.be/~pvr/VanRoyChapter.pdf
Forwarded from hirrolot
T* - мутабельный указатель на мутабельные данные
const T* - мутабельный указатель на константные данные
const T* const - константный указатель на константные данные
T * const - константный указатель на мутабельные данные
Doge Shibu:
Можно сделать мутабельное ООП в ФП языке на IORef'ах

См. статью Олега

Roman Proskuryakov:
дай ссылку

Doge Shibu:
https://arxiv.org/pdf/cs/0509027.pdf

https://news.1rj.ru/str/rust_offtopic/250638
Вот он здесь или на гитхабе. Пилится с бешеной скоростью одним чуваком из MIT и, кажется, является конкурентом Halide. Типа язык для написания очень производительного кода для параллельных вычислений и при этом дифференцируемый. Кажется, что на нём можно переписать тот же TensorFlow и он станет быстрее. И не заморачиваться со Swift.
учитывая, что в этой области сейчас как-то тухло, для для CUDA конкурентов нет, но она только на Nvidia, то что-то должно выстрелить в конце концов. Кто-нибудь смотрел, пробовал, запускал что-нибудь на этом Taichi?

https://github.com/yuanming-hu/taichi
(RSDN)

Но вот этот момент хочу прокомментировать. К сожалению, все мало-мальски известные функциональные языки (Haskell, ML, Erlang, Lisp, Scala) страдают (или наслаждаются?) одним и тем же фатальным недостатком — ужасным и невыносимым уродством синтаксиса. Из-за чего даже просто пробовать их не возникает особого желания.

Правильный функциональный язык — на поверхностном уровне — ДОЛЖЕН мимикрировать под C/Pascal!!! Без этого базового требования рыночная доля функциональщины никогда не выйдет за маргинальные пределы, в которых она и находится последние 60 с хреном лет, начиная с изобретения лиспа.

Правильный язык должен быть простым и понятным для освоения, раскрывающим "функциональные глубины" постепенно. Более того, должна быть возможность писать хелловорлды и простые программы императивным способом. И это подтверждается реальностью: недофункциональные Lua, Python, JavaScript, Rust имеют гораздо большую популярность, чем их хардкорные братья.

Кроме того, язык должен "прикольным", вызывать интерес. Ублюдочные же закорючки в хаскеле или окамле вместо интереса вызывают неприязнь.