Разработчики операционной системы Redox, написанной с использованием языка Rust и концепции микроядра, представили новый пакетный менеджер pkgar. В рамках проекта развивается новый формат пакетов, библиотека с функциями управления пакетами и инструментарий командной строки для создания и извлечения криптографически проверенной коллекции файлов. Код pkgar написан на языке Rust и распространяется под лицензией MIT...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=52546
Очень годно, почаще бы так!
А какая хрен разница? Есл оно работает - пусть себе работает.
При всей моей нелюбви к ржавому (адепт гошечки) -- ОСь на ржавом -- это сильная заявка на победу. Надо уважать труд людей и понимать, что кое-кто даже блокнота за свою жизнь не написал.
Оно работает только на Redox OS
Тебе то от этого какой профит?
Не знаю насчет pkgar, да и меня pacman устраивает, но многие решения из Redox OS кроссплатфоременны. Например, GUI тулкит OrbTk или shell ion. Возможно, и его можно будет юзать и в Linux-дистрибутивах.
Определиться не могут GTK или не GTK уже лет 20 или 30, а ты тут про новинки.
ion shell уже с пол года использую на Арче вместо командной оболочки(bash/zsh), вполне хватает для повседневных задач
Мне не хватает комплишена от oh-my-zsh. Есть ion-plugins (https://gitlab.redox-os.org/redox-os/ion-plugins), которые по сути портируют плагины oh-my-zsh, но там сразу сказано, что ion не поддерживает плагины, связанные с автодополнением. Единственное, что останавливает от переката.
> oh-my-zshТормозное гуано для неосиляторов и мамкиных какиров.
Потому и хочу перекатиться, но комплишен слишком приятен.
До тех пор пока твоего крутого шелла не будет на большей части деплойных серверов, смысла и польнзы от нее почти ноль
Ну не знаю. Шелл, который ты используешь на своей машине для взаимодействия с системой, и шелл, который ты используешь для скриптов/удаленного доступа, для меня - две разные вещи. Т.е. для скриптов я бы предпочел bash, в силу большей переносимости, да и от того, что я пострадаю немного от голого баша по ssh, я тоже не помру. Но 90% времени я провожу в рамках собственной машины и делаю себе там все как удобно мне, и мне совершенно не важно, если мой рабочий шелл не будет POSIX-совместим - я из него любые скрипты, если нужно, запущу башем.
pacman - такая же помойка, как и aptitude. То ли я не раскрыл сумасшедший потенциал этого ПМ, то ли чтобы его раскрыть нужно целую обёртку к этому дрму написать самостоятельно...
> пакет может быть установлен в любой каталогбудет ли он при этом работать, если пути прописываются в бинарнике при сборке
В вопросе уже содержится ответ.
>> пакет может быть установлен в любой каталог
> будет ли он при этом работать, если пути прописываются в бинарнике при сборке… подсунули ей железный лом. «КРЯК!» — сказала пила. «Ага, мля!!!» — укоризненно сказали суровые опеннетные лесорубы! И ушли рубить лес топорами ...
Пути внутрь бинаря зашивать не надо. Там могут быть умолчания, поверх которых можно в рантайме указать иные значения, но не более.
В комментариях опеннета эксперт на эксперте.....
Ты хотел сказать аноним на анониме?
А это одно и то же.
аноним на эксперте, потом они меняются
Посоветуйте актуальную полезную литературу по русту для нуба. 20 лет си с питоном и 1 день плюсов в бэкграунде (если не считать кути).
https://doc.rust-lang.org/book/
>2018Вот и я про то.
ps его там на гцц портировать не собираются?
gcc-шники что-то мутили (мутят), но rust пилят такими темпами, что сами за собой не успевают. Поэтому пока llvm и родные инструменты.
А как же запрет на использование названия "Rust" для альтернативных реализаций?
GNU/Rust
Так-то издание 2018 - это актуальное издание. Все новые версии сейчас выходят в рамках издания 2018. Издание определяет breaking changes с предыдущими версиями. Все версии вышедшие в рамках издания 2018 не содержат breaking changes, но содержат их по отношению к изданию 2015.Подробнее тут: https://doc.rust-lang.org/edition-guide/editions/index.html
Так что "The Book" - самое актуальное, что возможно найти по Rust в любой момент времени.
А надо ли оно тебе? Может лучше сети, железо поизучать?
Не всё же в сишке тухнуть. Голанг вот не особо зашёл, для себя преимуществ перед питоном (с си и цитоном, угу) не вижу. А тут вроде мощный выразительный язык, уже интересно для наколенных поделок всяких.
> Не всё же в сишке тухнуть. Голанг вот не особо зашёл, для
> себя преимуществ перед питоном (с си и цитоном, угу) не вижу.
> А тут вроде мощный выразительный язык, уже интересно для наколенных поделок
> всяких.Rust - судя по всему следующий хайп-язык, который затащат в прод.. и скорее всего сделают это сурьёзные конторы. Потому есть смысл "расширить" кругозор, особенно с таким багажом в Си. Golang на поверку оказался не так удобен/быстр/приятен/всемогущ, как обещали.. поиски лучшего языка продолжаются.
Dart тоже хотели затащить - не вышло
Ruby хотели затащить - не вышло
C# хотели затащить - не вышло
A rust задащат. Потому-что там
1) убийство С
2) безопасность
3) абстракции нулевой стоимости
> 1) убийство СРынок порешает
Это шарп-то не вышло?
Чисто из интереса - а кто и где пользуется шарпом? Ну, кроме студентов кастомизирующих шарепоинт для заказчика.
С месяц назад запускал маме под вайном очередную бесплатную программу от налоговой. Оказалась написана на Xamarin, благодаря чему оно довольно просто поднялось. Глядишь лет через 5 они там поймут, что там за непонятные кнопочки в разделе Target и таки научатся импортозамещать )А ещё я слышал, что .Net Core вполне неплохо себя показывает в бекенде, хотя никого не знаю, кто его использует. Вокруг одни пхпшники, жависты, нодежсники и немного гошников.
> С месяц назад запускал маме под вайном очередную бесплатную программу от налоговой.
> Оказалась написана на Xamarin, благодаря чему оно довольно просто поднялось. Глядишь
> лет через 5 они там поймут, что там за непонятные кнопочки
> в разделе Target и таки научатся импортозамещать )
> А ещё я слышал, что .Net Core вполне неплохо себя показывает в
> бекенде, хотя никого не знаю, кто его использует. Вокруг одни пхпшники,
> жависты, нодежсники и немного гошников.Надо ж! А я Windows ставил в VirtualBox чтобы заполнить "Декларацию 2019"
Не поверишь, много контор его используют, особенно после того, как он стал кроссплатформенным и появились кроссплатформенным IDE - Rider, взамен тормозной Visual Studio.
В Москве очень много компаний его используют, в том числе на новых проектах
Dart с энной попытки втаскивается через Flutter, и, похоже, в этот раз получается.
Ruby хотели затащить - вышло через Rails (сейчас уже сходит на нет, но проекты, на нем написанные, поддерживать еще долго).
C# - это у кого не вышло, у Microsoft? Да весь виндовый ентерпрайз на нем. В unix-мире - да, не вышло. Хотя язык сам по себе неплох, но инфраструктура - гхм.
> Dart с энной попытки втаскивается через Flutter, и, похоже, в этот раз
> получается.
> Ruby хотели затащить - вышло через Rails (сейчас уже сходит на нет,
> но проекты, на нем написанные, поддерживать еще долго).
> C# - это у кого не вышло, у Microsoft? Да весь виндовый
> ентерпрайз на нем. В unix-мире - да, не вышло. Хотя язык
> сам по себе неплох, но инфраструктура - гхм.То есть язык не прижился, они его через Ж хотят протащить. Ну ок.
C# - да, может и используется, только я со своей колокольни вижу бек-ендеров на Java/Kotlin, а C# давно не видел. Видимо не обитаю в тех местах
Ruby - туда же. Rails нет, не помог. В 2010-2012-м Ruby пиарили, но невзашел.
>Golang на поверку оказался не так удобен/быстр/приятен/всемогущДа, но Rust опупенно [sarcasm]приятен[/sarcasm]!
У Rust есть шероховатости, связанные с его гарантиями (война с лайфтаймами поначалу и т.д.). Но когда побеждаешь все это и начинаешь понимать смысл концепций языка, Rust очень приятен.
Golang хорош тем, что на нем может писать любой джун. Банальная императивщина уровня школьного паскаля с гринтредами на уровне языка, изучается за пару дней. Для сложных задач сразу столкнешься с ограничениями, но большинству надо клепать банальные микросервисы.Для Rust-а же у большинства не хватит мозгов, чтобы его сходу понять, надо иметь опыт и в современных плюсах со смартпоинтерами, и в функциональщине а-ля Haskell. Порог входа с Go несравним вообще. Это серьезный язык для серьезных проектов.
>Для сложных задач сразу столкнешься с ограничениямиКакими ограничениями? Слишком мала ниша, где нельзя использовать языки со сборкой мусора. Считай, что ограничений нет.
Проблема не в сборке мусора как таковой, а в gc pause.
100 микросекунд -- с каких пор это критично?
https://blog.discordapp.com/why-discord-is-switching-from-go...
https://fuchsia.googlesource.com/fuchsia/+/refs/heads/master...Бывает критично. Всегда есть задачи, когда даже минимальный рантайм костью в горле становится. А рассуждая из позиций "современные машины быстрые, разница между языками незаметна", можно операционные системы на Lua начать писать. Высоконагруженные сервисы, операционные системы, AAA-игры и т.д. - во всех этих нишах Go не подойдет, во всяком случае не для ключевых компонентов.
И не надо тригериться, я совсем не противник Go и рад, что этот язык развивается и хорошо себя чувствует, хотя я и больше по Rust. Это просто объективный факт: нет инструментов, которые к месту абсолютно везде.
> Высоконагруженные сервисы, операционные системы, AAA-игры и т.д. - во всех этих нишах Go не подойдет, во всяком случае не для ключевых компонентов.Go сейчас - ТОП-1 язык для ключевых компонентов высоконагруженных сервисов.
Дискордовцы со своим переездом:
1. хотели переписать на Rust. именно хотели (он был у них очень популярен в команде)
2. здорово опозорились со своим объяснениями (их уже все кому не лень макнули: задержки, которые они испытывали в сотни-тысячи раз больше чем должны быть при компетентной реализации, ребята даже в минимальное профилирование не смогли). почитайте лучше про задержки у профессиональных программистов где-нибудь в NYT.Фуксия не аргумент, она используется нигде.
100 микросекунд -- может быть критично только в ОЧЕНЬ узкоспециализированных случаях, которых может быть 0,001% от всех случаев. И там используется уж совсем специфичные инструменты. Высоконагруженные сервисы -- Го как раз для них и создан. Операционные системы на Го -- сама по себе идея создавать операционную систему (как анало гсуществующих) -- идея бездарная (хотя Го это может). ААА-игры -- да без проблем. Во всех этих нишах Го подойдёт, в том числе и для ключевых компонентов.Я не триггерюсь, я не фанат Го, но я вижу, как Го прекрасно себя чувствует и развивается. У Го -- безоблачное будущее, что я не могу сказать про Раст. Это просто объективный факт: более примитивный
(а значит потенциально надёжный) язык закономерно убъёт более сложного громоздкого собрата. Ничего личного, просто бизнес.
Помимо GC еще есть проблема в недостаточной (по крайней мере пока что) выразительности языка. И да, я про те же набившие оскомину дженерики. Но это действительно проблема. Строгая статическая типизация без дженериков приводит к бойлерплейту, слабая стическая типизация (как в C) приводит к обобщенному коду через опасные хаки (void*). Хорошие дженерики необходимы строго и статически типизрованным языкам, если мы хотим уменьшить вес динамически типизрованных языков.
На дженерики уже не только дизайн, но и патчи есть, так что тут упрекать уже сложно.
Ну так и здорово в таком случае! Рад за Go, давно нужно было этот момент пофиксить.
Даже когда с Go 2.0 дженерики будут официально -- лично мне они не нужны. Я бы больше подумал над человеческим профилировщиком (при том, что имеющейся вместе с эскейп-анализом -- вполне не плох технически).
> Даже когда с Go 2.0 дженерики будут официально -- лично мне они не нужныВообще интересно, что гоферы так часто говорят. Разве так не получается куча кода, который сложно переиспользовать для разных задач и для разных данных? Или вы как-то через интерфейсы все время отруливаетесь для обобщения и вам хватает? Но такой способ обобщения дороговатым может быть, как я понимаю (ведь это через динамическую диспетчеризацию работает?).
> Вообще интересно, что гоферы так часто говорят. Разве так не получается куча кода, который сложно переиспользовать для разных задач и для разных данных?Я другой гофер, но с тем анонимом согласен. Так вот, представьте себе такой unix софт как ls. Или cat. Обобщать у них внутри просто нечего. И это не делает их плохим софтом. Когда вы пишите идиоматичный Go-код, он получается ориентированным на данные. У вас почти всё - это слайс (динамический массив) байт. И обобщать там нечего.
Боль по генерикам в Go, не всегда, но в условных 9/10 случаев, испытывают те, кто пишут на Java/C# но на Go. Когда вы пишите на C#, у вас есть несколько классов. Они являются разными типами и генерики помогают без бойлерплейта закодить им одинаковое поведение. Когда вы пишите нормальный Go код у вас в обоих случаях будет слайс байт.
Сам Go чертовски простой, а вот писать на нём тяжело - надо отказаться от тех парадигм которым всех учили с момента появления Java.
Ну, мне пока не очень понятно, надо попробовать.> Сам Go чертовски простой, а вот писать на нём тяжело - надо отказаться от тех парадигм которым всех учили с момента появления Java.
Так-то Rust тоже совсем не типичный ООП-язык. В нем императивное ООП плавно смешивается с функциональщиной и никакого наследования типов (эта дрянота заменяется композицией и типовыми предикатами на трейтах). Для Rust тоже нужно учиться иначе думать, Go не единственный язык, который осознал косяки прошлого, выдаваемые за гениальные идеи (типа исключений или наследования типов).
в ls очень даже есть что обобщать - сортировку по разным типам, но в go с этим беда.
> в ls очень даже есть что обобщать - сортировку по разным типам, но в go с этим бедавы или не программист или никогда ничего не сортировали на Go (даже hello worldы)
сортируемое в Go - это интерфейс, вам просто нужно его реализовать для каждого типа с (учетом приоритетов)
т.е. "разные типы" которые вы упомянули в Go будут одним типом (интерфейсы в Go тоже типы)
Матчасть не знаешь анон, а туда же. Есть такая штука, как кодогенерация в Го. И её -- хватает за глаза.
> Для Rust-а же у большинства не хватит мозгов, чтобы его сходу понять, надо иметь опыт и в современных плюсах со смартпоинтерами, и в функциональщине а-ля Haskell. Порог входа с Go несравним вообще. Это серьезный язык для серьезных проектов.Аноним ничего не перепутал? Или "илитисты" какие покусали?
Серьезные проекты на Go: Docker, Drone, etcd, consul, terraform, Cockroachdb, k8s
Серьезные проекты на Rust: ... (фреймворки и внутренние проекты считать не будем)
И Rust по-моему на 3 года старше Go (ну по крайней мере аноним за это топил в соседней ветке)
...и это вы ещё до PHP не дошли :)
> И Rust по-моему на 3 года старше Go (ну по крайней мере
> аноним за это топил в соседней ветке)Rust 1.0 вышел только в 2015, таким образом пригодный для использования, а не экспериментов Rust появился гораздо позже Go (какой там год был, 2009?)
> Rust 1.0 вышел только в 2015это был чисто формальный выпуск 1.0, менеджмент мозилы был уже очень недоволен (сама реализация языка - вполне себе софт, софт который пилится по 6 лет прежде чем стать чем-то пригодным, это неприемлемо) (ну если вы оплачивали труд профессиональных программистов, то понимаете почему)
> таким образом пригодный для использования...
... Rust становится где-то в 2018 году, почти через 10 лет после начала разработки и огромного, чудовищного просто (детали ищите в блоге Drew Devault) количества изменений. что любому программисту говорит об очень слабом изначальном дизайне, низкой продуманности, из-за которых приходилось много лет доводить до ума, улучшать. к сожалению ситуация выглядит так, будто ребята не могут остановиться в своей тяге "к улучшению", лично мне хотелось бы чтобы Rust прикопал плюсы, а не присоединился к ним.
> гораздо позже Go (какой там год был, 2009?)
релиз 1.0 был по-моему в 2012, но Go мало меняется, почти весь софт написанный скажем в 2010 (если он не включал какой-то самописный context), является вполне себе идеоматичным и правильным и сейчас, если он был таким в 2010. что как раз говорит о крутом начальном дизайне. а что сейчас код написанный на Rust до 2018 (а тем более где-то в 2010)? - legacy скорее всего
Есть разные подходы. Есть смелые языки, как Rust, которые готовы ломать устоявшиеся традиции, быстро развиваться и экспериментировать. А есть тихие гавани, вроде Go или C. Я лично считаю, что оба подхода имеют смысл и шеймить людей, типа "ололо, вы быстро все меняете, у вас весь код тут же устаревает" или "ололо, у вас нифига не меняется, вы отстаете в развитии по все фронтам" - это бред.Подход Rust пока не особо привычен для людей в мире языков программирования (нечто похожее происходит в C++, но рывками, а не плавно и гибко, как в Rust), но он себя оправдывает.
Для кода в предыдущих редакциях у Rust тоже не все так плохо, как вы думаете:
https://doc.rust-lang.org/edition-guide/editions/transitioni...
> лично мне хотелось бы чтобы Rust прикопал плюсы, а не присоединился к ним.
Красота в том, что разные редакции Rust компилятор поддерживает вечно, но они не обязаны быть совместимы друг с другом (однако крейты в разных редакциях будут линковаться). Это избавляет Rust от ключевой проблемы C++: накопление кучи теснящихся в одной семантике абстракций, многие из которых уже давно утратили валидность. Rust может позволить себе выбрасывать не оправдашвие себя идеи и не ломать совместимость. Это очень важное решение, как по мне.
>Голанг вот не особо зашёл, для себя преимуществ перед питоном (с си и цитоном, угу) не вижу. А тут вроде мощный выразительный язык, уже интересно для наколенных поделок всяких.Вот Python для наколенных поделок и есть самое то.
https://www.amazon.com/BEGINNING-RUST-NOVICE-PROFESSIONAL/dp...
П.С книгу можно легко найти в сети:)
Такой взрослый, а в нете искать не умеешь...
Вопрос только в мотивации.
Три вакансии по России вот и вся мотивация
На самом деле во всем мире на сегодня расклад таков, что проще притащить Rust в проект на своей текущей работе, чем ждать вакансий. И таким образом его сейчас юзают гораздо активнее, чем оно выглядит на сайтах с вакансиями.
История с коронавирусом показывает, что программист можно прекрасно работать удаленно, и от этого, в отличие от коронавируса, никто не умер.Так что какая разница где?
Где пруфы, что никто не умер ?Разница в законодательстве и проч.
Нынешний интерес к расту чем-то напоминает относительно недавний к RoR, когда анонимусы и подозрительные личности на хабре просто писали кипятком и радугой, начиная рассказывать, как же он хорош и почему минусов у него нет вообще( и почему на этот раз пэхапе точно помрёт ).
Прошло немного времени.. и где этот рубин_на_рельсах ? Про него уже порядком позабыли, а проекты как пилили на пыхе, ноде, питоне, го, жабе, так, в большинстве своём, и продолжают это делать.И самое главное, неведомо куда испарились анонимусы и хабрарожи, уссывавшиеся радугой - даже спросить за форсинг барахла толком и не с кого :)
п.с: хотя раст и чем-то интересен, в своё время были крайние неудобства дробления на отдельные файлы / модули.. да и размер хеллоуворда 200+КБ для оптимизированной версии - это совсем не то, что ожидаешь от "очень безопасного низкоуровнего языка с нулевым рантаймом и практически безграничными возможностями к оптимизации". Кстати, не так давно оно вроде полегче стало - господа выкинули "супер-крутой аллокатор"
> да и размер хеллоуворда 200+КБ для оптимизированной версииRust по умолчанию оптимизирует по производительности - если стоит задача собирать под хлебушек, нужно иначе настраивать сборку. Примеры вещей, которые можно сделать:
https://github.com/johnthagen/min-sized-rust
> господа выкинули "супер-крутой аллокатор"
Да, jemalloc выкинули, теперь по умолчаню юзается системный аллокатор. Ны вы все равно можете настроить себе тот, который вам больше нравится.
Я для интереса пробовал целую кучу советов из тырнетов именно для ужимания( оптимизации ) именно по размеру, кроме, совсем уж грязных трюков и темных ритуалов( по итогу которых, даже нельзя быть уверенным, будет ли какая-нибудь сложная прога ожидаемо работать ).
Но по умолчанию оно еще толще получалось. А если еще и т.н отладочная инфа в придачу..
А ведь когда-то мне пригорало с 20+ Кб хеллоуворда на Си.. т.к смутно припоминал, что на каком-нибудь асме( masm ), оно будет весить порядка 4Кб - и то, внутри будет очень много пустого пространства.Примечательно то, что этот аллокатор весил под 70-120Кб в максимально оптимизированном по размеру х.в.
Я хз, чего они туда такого натолкали и как это можно именовать чем-то оптимизированным и с типо_нулевым_рантаймом.А вот проект по ссылке погляжу..
> да и размер хеллоуворда 200+КБ для оптимизированной версии - это совсем не то, что ожидаешь от "очень безопасного низкоуровнего языка с нулевым рантаймом и практически безграничнымиСтандартный, стрипнутый, сишный -- в бубунте тянет на 750KB.
А так -- все хорошо, прекрасная маркиза.
> Где пруфы, что никто не умер ?Доказать отсутствие легко приведением единственного контрпримера. О таковых информации нет.
> Разница в законодательстве и проч.
Это все кажется страшным для тех, кто никогда этого не делал.
ИП и валютный контроль - это совсем не страшно.
Официальная книжка на сайте. Более глубокое изучение - книжка под названием Rustonomicon - там кишки разжёвываются.И просто к слову, Qt - читается «кьют», то есть «милашка».
Поручик на балу Ростовой:
- Наташа, а Вас когда-нибудь били веслом по п...?
- Нет, а что?
- Да так, просто к слову.
Почему именно веслом?
Поручик был байдарочником?
Советую посмотреть вот этот курс параллельно с чтением материалов с официального сайта (Rust Book и все прочее):https://www.youtube.com/watch?v=Oy_VYovfWyo&list=PLlb7e2G7aS...
С вашим бэкграундом много нового не узнаете, но будут полезные сравнения и более детальные пояснения, чем в Rust Book.
Можете еще глянуть на книгу Programming Rust: Fast, Safe Systems Development
Jim Blandy "Why Rust?". В книге меньше ста страниц. Описывает преимущества раста специально для сишников.
можно начать отсюда https://www.rust-lang.org/ru/learn
Очень рекомендую бумажную книгу https://dmkpress.com/catalog/computer/programming/978-5-9706.../
> Атомарность - обновления применяются по возможности автоматически.Как связаны атомарность и автоматическая установка?
Тот же вопрос мучает.
В случае атомарных обновлений автообновления включать относительно безопасно. Если что-то пойдет не так, обновление просто не завершится. При неатомарных обновлениях можно получить неконсистентное состояние системы, когда где-то на середине распаковки пакетов произошел фейл. Потому в при неатомарных обновления лучше производить обновления вручную, чтобы каким-то неосторожным действием не прервать обновление (которое в случае автообновлений будет происходить незаметно в фоне).
>> Атомарность - обновления применяются по возможности автоматически.
> Как связаны атомарность и автоматическая установка?Неверным переводом:
> Atomic - updates are done atomically if possible
И скачиваются пакеты по https или как всегда?
>> верификация источника по цифровой подписи и контроль целостности
>> Связанная с верификацией функциональность pkgar может быть доступна без фактического сохранения архива пакета, манипулируя только заголовочной частью
> И скачиваются пакеты по https или как всегда?Интересно, доступ к флешкам/внешним носителям у Свидетелей Всемирного HTTPS-ца тоже через жо^W <эт-самое>? o_O
Вам шашки или ехать? Если боитесь той сети, в которой находитесь - прокиньте трафик через шифрованное соединение самостоятельно, в чём проблема?
Если go - примитивный, то почему до сих пор нет транспайлера go-to-rust?
Для миграции на rust было бы удобно, заодно и библиотек прибавилось бы.
Во-первых, не получится автоматически транспайлить с языка с gc в язык без gc.
Во-вторых, идиоматические отличия слишком велики.
>Во-первых, не получится автоматически транспайлить с языка с gc в язык без gc.nim смог https://nim-lang.org/docs/nimc.html
Nim, как я понимаю, это делает таким образом, что GC просто вставляется в результирующий исходный код на C. К тому же сомневаюсь, что с результатом трансляции Nim на C можно работать как исходниками.Аноним выше не совсем корректно сказал. Не получится транспайлить из языка с динамической типизацией в идиоматический Rust. В общем-то, возможно, можно как-то отрулиться через умные указатели, но если в исходниках на Go были, например, циклические ссылки, это чревато утечками памяти (что тоже можно аккуратно обойти, но, думаю, не всегда). Другой подход - поступать как с Nim и вставлять в результат трансляции в Rust код GC, но бенефит от такого переката сомнительный.
> с динамической типизациейИзвиняюсь, думал о другом и опечатался. Из языка с GC.
Если таскание с собой рантайма считать транспайлингом, это тогда и пхп можно
> Во-первых, не получится автоматически транспайлить с языка с gc в язык без gc.Про умные указатели слышал?
Про циклические зависимости слышал?
Ну так пусть сами себя и транспилят, раз уж такие умные
Что выйдет в итоге? Обмазанный толстыми указателями код вместо растовых дженериков (так как в го их нет) с множеством аллокаций в куче (как минимум из-за vtable), причём не забываем что по причине отсутствия дженериков местами в го любят использовать рефлексию. Сомнительная эфективность даже в сравнении с unsafe-кодом, конвертированным из c/c++
> Обмазанный толстыми указателями код вместо растовых дженериков (так как в го их нет)Щито?! Очередной диванный аналитег))
> по причине отсутствия дженериков местами в го любят использовать рефлексию.
Рука-лицо. иди читай пропозал Го 2.0
>Сомнительная эфективность даже в сравнении с unsafe-кодом
))) Пишется "эффективность", дефектный ты наш. Ансейф код, уж извини уважаемый анон -- в гошечке на уровне лучших образцов Си. Только за ансейф код в Го -- надо пальцы ломать молотками.
>> Обмазанный толстыми указателями код вместо растовых дженериков (так как в го их нет)
> Щито?!Какое слово тебе непонятно?
"обмазанный"? "код"? "дженерик"? "толстый указатель"?
Предположу, что последнее, тогда вперёд читать до просветления гугл по запросу fat pointer. Вкратце же это выглядит так: указатель, который содержит только адрес объекта -- это "тонкий указатель", а если в этом указателе помимо адреса ещё и информация о типе, бит для сборщика мусора, и прочие свистоперделки, то это уже жирный указатель.
Мне всё непонятно. С каких пор в Го нет указателей, с каких пор указатели в Го "обмазаны", с каких пор в Го появились "толстые" (а значит и "тонкие") указатели?
И с каких пор в Го 2.0 решили выпилить дженерики?
> с каких пор в Го появились "толстые" (а значит и "тонкие") указатели?Ой, я не знаю насчёт тонких, а толстые там с тех пор, как в Го запилили gc и динамическую типизацию.
>> с каких пор в Го появились "толстые" (а значит и "тонкие") указатели?
> Ой, я не знаю насчёт тонких, а толстые там с тех пор,
> как в Го запилили gc и динамическую типизацию.Не существует ни толстых, ни тонких указателей. Существуют просто указатели.
В го нет ДИНАМИЧЕСКОЙ типизации.
GC никак не влияет на размер указателей. Это перпендикулярное и круглое.
Кто реально пользуется сабжом? Для чего она, или это так очередной академичекий проект...
Это сразу понятно по фразам: "написанной с использованием языка Rust", "написан на языке Rust"...
Очередной академический проект.
Ура, ад зависимостей, который страшнее ада dll теперь и там.
Представьте мне пожалуйста нормальную инфраструктуру и IDE для Rust.
//оффтопnixpkg рулит!
Как там насчет деревьев и графов, и чтобы безо всяких плясок с бубнами и через одно место? Или это все еще слишком сложные структуры данных для Rust?!
а что сложного? если через unsafe делать - это несложно вроде?
ещё есть реализация в std: https://doc.rust-lang.org/std/collections/struct.BTreeMap.html