Pull to refresh
76
0
Андрей Лесников @ozkriff

Rust сектант и хобби-игродел

Send message

Это же не какой-то врожденный недостаток самого языка. Просто язык новый, он активно развивается, как и его основной компилятор, а стабилизация ABI усложнит эту работу. Плюс, на ржавчине в данный момент нет готовых и полезных широкой общественности приложений или библиотек.


Да и вообще, у ржавчины даже просто стандарта языка еще нет)

А если они используемые?

Тогда все плохо, конечно, и остается только разводить филосовские беседы по поводу тотального доминирования раздутого и переусложненного ПО в индустрии и с грустью смотреть на всякие экспериментальные минималистичные штуки в духе http://sta.li ))

Все по разному понимают что такое "системный язык". Под одни определения ржавчина подходит, под другие — нет.

насколько в таком режиме можно свободно пользоваться rust'овым рантаймом

А какие вообще сложности с этим могут быть? Тут только теряется автономность приложения.


И как много этого райнтайма будет вынесено как динамические библиотеки наружу.

Смотря что конкретно иметь ввиду под "рантайм", но в обычном смысле, наверное, можно сказать что он весь во внешней библиотеке.


насколько получившийся бинарь будет способен пережить различия в минорных версиях компилятора

Насколько я знаю, с этим никаких гарантий никто не дает сейчас.

Если ржавчина станет настолько популярна, что легкое распухание сотен тысяч исполняемых файлов на компьютере рядового пользователя станет серьезной проблемой, то тогда и будут стабилизировать ABI и все это разгребать. На данном этапе развития языка это далеко далеко не самая актуальная проблема.

а можно ли собрать с этим нововведением helloworld.exe минимального размера?

cdylib для библиотек нужен


рассчитан на компиляцию динамических библиотек, предназначенных для встраивания в программы на других языках

Ну так статья потому и была написана, что вопрос очень часто всплывает у знакомящихся с языком. Чаще, наверное, чем медленная скорость работы кода (из-за отладочных сборок по умолчанию).

Хотя в случае Rust возможно и к самому языку — зачем линковать «рантайм» статически ..., если от программы хотят вывести строку на консоль?

Потому что он для этого нужен по умолчанию, если специально не извращаться. Просто у Си рантайм идет сразу со всеми распространенными ОСями.


… и что это за рантайм вообще такой ...

https://www.rust-lang.org/en-US/faq.html#does-rust-have-a-runtime

Пора уже придумать формат библиотек, в котором код хранился бы в виде синтаксического дерева, и пересмотреть сам процесс линковки как таковой.

По умолчанию ржавчина так и делает для своих собственных библиотек, иначе бы обобщенный код из библиотек был бы недоступен (заголовочных файлов-то нет).

если сделать декартво произведение от запущенных бинарников и их so'шек

По идее, во время сборки неиспользуемые куски зависимостей будут выкинуты оптимизатором.

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


#[no_mangle]
pub extern "C" fn hello() {
        println!("hello!");
}

это уже так хорошо не укукоживается.

rustc не показывает вариант опции --crate-type=cdylib

У меня в справке варианта нет, но команда выполняется. Наверное, просто забыли обновить справку.

А если с оптимизациями?

Вместо Contributor Agreement можно просить, чтобы коммиты были под BSD или еще какой-нибудь «мягкой» лицензией.
«ваш» будет код или «не ваш» зависит от лицензии на эти коммиты посторонних людей. Если только принимать коммиты под правильной лицензией — то «ваш» и останется.

Хотя с точки зрения продажи конечного продукта это не принципиально, сами по себе BSD и близкие лицензии не передают код в чье-то владение, копирайт на комиты так и остается за изначальным их автором.

И да, новый формат сообщений от компилятора очень удобный для чтения человеком, ради него сейчас ночную сборку как основную и использую.

Интересно, зачем они все привязки используют свои собственные? О.о Даже инициализация контекста своя для каждой платформы, хотя давно уже есть glutin.

достаточно много респондентов сказали, что используют nightly-билды компилятора. Есть мысли на этот счет?


Я тут добавлю, что с тех пор как rustup довели до ума, переключаться между разными версиями компилятора на одной машине стало дико просто. Лично мне ночная сборка бывает нужна, допустим, для локальной установки статического анализатора clippy, что бы не гонять CI-сборки тысячу раз для вычистки новых предупреждений.
Потому что очень размытое заявление (в таком виде выглядит очень похоже на много кем критикуемую WTFPL), действительность которого для законодательств разных стран сомнительна. И, как я понимаю, в качестве бонуса на тебя могут подать в суд за ущерб, нанесенный твоим ПО (потому что не проговаривается отказ от ответственности блаблабла), или насчет патентов.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity