замедление времени — всё это стоит на обычном школьном синусе, которому угол сделали мнимым.
Ну то есть мы можем, пользуясь такими синусами честно и численно показать аномальное смещение перигелия Меркурия, которое 43 угловые секунды? Было бы любопытно взглянуть на расчёты.
Не, я думаю там не на llvm основное время уходит, им-то многие компиляторы пользуются, и там всё резвее. Тут дело в том, что ещё до llvm производится несколько проходов. Если вы в курсе основных фишек Раста, я имею ввиду владение, заимствование, мутабельность и время жизни, вот это вот всё, то вы поймёте почему так, там всё это чекается на предварительных проходах.
Вот смотрите, допустим такой примитивный код, тут восемь строчек всего:
fn main() {
let mut x = 10; // создаём изменяемую переменную x со значением 10
add_one(&mut x);// передаём изменяемую ссылку на x (mutable borrow)
println!("x after mod: {x}"); // выводим значение x после изменения
}
fn add_one(n: &mut i32) {
*n += 1; // разыменовываем ссылку и увеличиваем значение на 1
}
Вначале при компиляции идёт стадия HIR (High‑Level IR) - преобразование в высоко-уровневое промежуточное представление. С некоторой натяжкой его можно назвать "препроцессор", тут разворачиваются макросы, код очищается от "сахара", вот что получится, это всё ещё Раст:
extern crate std;
#[attr = PreludeImport]
use std::prelude::rust_2024::*;
fn main() {
let mut x =
10; // создаём изменяемую переменную x со значением 10
add_one(&mut x); // передаём изменяемую ссылку на x (mutable borrow)
// выводим значение x после изменения
// разыменовываем ссылку и увеличиваем значение на 1
{
::std::io::_print({
super let args = (&x,);
super let args = [format_argument::new_display(args.0)];
unsafe {
format_arguments::new(b"\rx after mod: \xc0\x01\n\x00",
&args)
}
});
};
}
fn add_one(n: &'_ mut i32) { *n += 1; }
Затем идёт вторая стадия, THIR (Typed High‑Level IR), тоже высокоуровневая, тут я только кусочек покажу:
Следом идёт средняя промежуточная стадия MIR (Mid‑Level Intermediate Representation), тут мы ближе к llvm, и как раз на этом этапе разбираются заимствования, владения, времена жизни, и Miri, кстати, работает как раз на этом уровне:
Вот что происходит всего с восемью строчками кода. Я полагаю, что основное время затрачивается на этапе THIR, но как-то руки не доходили проверить, да и не знаю как.
лучше не выдавать один гигантский крейт, в котором содержится всё и сразу. Вместо этого мы откорректировали наш компилятор, преобразующий SQL в Rust, так, чтобы он распределял вывод на несколько более мелких крейтов.
Это первое, что пришло в голову, даже недочитав до этого места, ведь хорошо известно, что проект с сотней-другой крейтов при компиляции после cargo clean занимает многоядерник на всю катушку:
У меня возник вопрос — если тут транспилятор на другой язык, то почему именно Раст? Ведь можно с таким же успехом и в Си перегонять, но вижу, что это просто перевод.
И это то, что нам показывают, а так я совершенно не удивлюсь, если её супруг, дегустирующий эти самые булочки, внезапно окажется владельцем какого-нибудь рекламного агенства и знакомым управляющего кафе, плюс организовавший команду для съёмки и пиара тикток роликов и до кучи знающий кого-нибудь из Business Insider, и всё это просто красиво поданный бизнес-проект. Вот не верю я нынче в такие истории...
У моей супруги в Фиате 500 спорт стоит любопытный моторчик — Twin Air Turbo, объёмом 0.9 литра. Там всего два цилиндра, причём они работают синфазно (вот не спрашивайте, поджигается ли там смесь в двух сразу или поочерёдно, я всё-таки думаю, что поочерёдно). Чтобы всё это чудо не ходило ходуном, там вал с противовесами в обратную сторону крутят. На канале Ильдар автоподбор его разбирали, там владелец был недоволен динамикой, но его в тяжёлую машину 500L вкорячили, либо там ещё и 85 сил версия была до кучи. Но 105 сил лёгкому Фиату вполне хватает, в спорт режиме он за 10 секунд примерно до сотни разгоняется, и по автобану 200 из него выжать можно, что для литрового неплохо. А в эко-режиме он экономичный, если ехать аккуратно, то 4 c небольшим литра на сотню. Он старенький довольно, в 2011 получил награду "лучший мотор года". Звук при работе правда странный, почти как мотоцикл с погромыхивающими клапанами.
Мощно, спору нет. А разве голый кирпич не надо ничем снаружи облицовывать, он же вроде довольно пористый и влагу будет набирать будь здоров? В Гамбурге очень много "кирпичных" домов, это стиль такой, но если присмотреться, то там на самом деле не обычный кирпич, а "клинкер", типа специальный облицовочный, почти квадратный в сечении он как керамика обожжённая со слоем глазури, его обычно через слой теплоизоляции кладут.
С гитхабом тоже надо аккуратно, скажем тот же код LabVIEW (который графический) туда нечасто выкладывают просто потому, что гитхаб под него не слишком заточен и он просядет в рейтинге, опять же учёные не так часто гитхабом пользуются, так что долю того же MATLAB это тоже опустит немного. Тут что-то комбинированно-взвешенное надо.
Делал себе что-то похожее, когда учил французский, на LabVIEW правда. Но у меня были проблемы с восприятием на слух, так что я брал учебные тексты и диалоги с аудио рядом и делал воспроизведение по предложениям или словам с возможностью замедления воспроизведения (есть алгоритмы, позволяющие замедлить, но без изменения высоты тона). Правда с форматом не заморачивался, просто XML с маркерами времени, чтобы звук из wav брать и проигрывать. В принципе похожие программы есть, просто в каждой что-то да не устроило.
Я просто немного этой области "касаюсь" и вижу там всё больше тот же LabVIEW, вот ещё Фортран, и MATLAB/Octave/Maple, ну и Python в последнее время. Хотя возможно, моя выборка нерепрезентативна. Повод посмотреть на R повнимательнее, я никогда его не "трогал", честно говоря, хотя стараюсь быть в курсе и на всех из первой двадцатки что-то делал, кроме Ada и Swift, пожалуй.
Самое главное тут - LabVIEW с 32-го места переехал на 26-е, обогнав Julia и Kotlin, глядишь, так и в двадцатку войдёт! Вообще к этому рейтингу есть некоторые вопросы, я вот сильно не уверен, что R так уж популярен, но в общем топ 5 и так хорошо известен.
Попробовал на мультимониторной конфигурации - тоже работает, но почему-то окна при максимизации залетают под док, ровно тот же исполняемый файл но на одномониторном ноуте работает норм - при макисмизации они разлетаются только до границы и под док не залазят. Может быть проблема винды. Ну и уже понятно, что надо фильтровать окна - скажем у меня на левом мониторе обычно брааузер открыт и он ничем не перекрывается, и его превьюшка не нужна, ну а в режиме работы с LabVIEW хочется видеть только превьюшки от этой среды, а другие не нужны, но это легко можно допилить. В общем стандартные хотелки, которые можно самому доделать под себя.
Да, спасибо, стало лучше. Штука оказалась неожиданно удобная, сегодня заполнял налоговую - на экране дофига всего, и калькулятор, а в превьюшке виден последний результат, и эксель, и там увеличение при наведении мыши удобно. Дома у меня не очень большой экран, а на работе не так актуально, там у меня три монитора, из них два вертикальных, но тоже попробую.
18кб это если собирать из расчёта что в системе есть рантайм.
Вы невнимательно коммент прочитали, не 18 кб, а "на 18 кб меньше". У автора исполняемый файл 2001К или 2.049.024 байт, а если просто заменить таргет с 11 на 10 в csproj и собрать вот ровно той же командой dotnet publish -c Release -r win-x64, то будет 1967К или 2.013.696 байт, то есть на 34 кб меньше. А 18 кб - это после того, как я скроллбар туда добавил. Кстати, его ещё и upx пожать можно, он не потеряет работспособности, а станет меньше мегабайта - 884224 байт всего.
Ещё есть the Ghidra Book за авторством Chris Eagle и Kara Nance, недавно вышло второе издание. В конце там небольшое приложение для тех, кто знаком с IDA. Основное отличие, что Гидра как бы проектно ориентированная, ну то есть вначале надо создать проект, а потом импортировать туда бинарники для анализа (в четвёртой главе всё детально расписано), а в Иде просто открыли и погнали.
Я эту книгу прочитал в тот момент, когда уже вёл рукописные заметки несколько лет (в большей степени как инбокс для системы GTD Дэвида Аллена), и таким образом получил подтверждение, что всё делаю правильно. После прочтения чуть подкорректировал систему и стало совсем хорошо.
— А о чём, товарищи, эта книга? — осведомился он.
— Да ни о чём, — сказал я.
Купите мощный UV фонарь, где-то 400 нм вроде, выйдите на поиски вечером и попробуйте поискать по флуоресценции.
Ну то есть мы можем, пользуясь такими синусами честно и численно показать аномальное смещение перигелия Меркурия, которое 43 угловые секунды? Было бы любопытно взглянуть на расчёты.
Не, я думаю там не на llvm основное время уходит, им-то многие компиляторы пользуются, и там всё резвее. Тут дело в том, что ещё до llvm производится несколько проходов. Если вы в курсе основных фишек Раста, я имею ввиду владение, заимствование, мутабельность и время жизни, вот это вот всё, то вы поймёте почему так, там всё это чекается на предварительных проходах.
Вот смотрите, допустим такой примитивный код, тут восемь строчек всего:
Вначале при компиляции идёт стадия HIR (High‑Level IR) - преобразование в высоко-уровневое промежуточное представление. С некоторой натяжкой его можно назвать "препроцессор", тут разворачиваются макросы, код очищается от "сахара", вот что получится, это всё ещё Раст:
Затем идёт вторая стадия, THIR (Typed High‑Level IR), тоже высокоуровневая, тут я только кусочек покажу:
Так-то там восемьсот(!) с лишним строк
Следом идёт средняя промежуточная стадия MIR (Mid‑Level Intermediate Representation), тут мы ближе к llvm, и как раз на этом этапе разбираются заимствования, владения, времена жизни, и Miri, кстати, работает как раз на этом уровне:
Полностью
И лишь затем идёт собственно llvm, это четвёртая стадия, там видно как наша константа 10 с инкрементом "сфолдилась" в 11:
.LLVM полностью:
LLVM
На а дальше ассемблер, тут просто по итогу печатаем 11 в консоль, вот здесь:
Ассемблер
полный листинг
Вот что происходит всего с восемью строчками кода. Я полагаю, что основное время затрачивается на этапе THIR, но как-то руки не доходили проверить, да и не знаю как.
Это первое, что пришло в голову, даже недочитав до этого места, ведь хорошо известно, что проект с сотней-другой крейтов при компиляции после cargo clean занимает многоядерник на всю катушку:
У меня возник вопрос — если тут транспилятор на другой язык, то почему именно Раст? Ведь можно с таким же успехом и в Си перегонять, но вижу, что это просто перевод.
Да потому что "сварщицей" уже было — https://www.businessinsider.com/software-engineer-pivoted-to-welding-because-ai-happier-now-2026-3... Ждём теперь такую же историю про, ну не знаю, водительницу грузовика, что ли?
И это то, что нам показывают, а так я совершенно не удивлюсь, если её супруг, дегустирующий эти самые булочки, внезапно окажется владельцем какого-нибудь рекламного агенства и знакомым управляющего кафе, плюс организовавший команду для съёмки и пиара тикток роликов и до кучи знающий кого-нибудь из Business Insider, и всё это просто красиво поданный бизнес-проект. Вот не верю я нынче в такие истории...
У моей супруги в Фиате 500 спорт стоит любопытный моторчик — Twin Air Turbo, объёмом 0.9 литра. Там всего два цилиндра, причём они работают синфазно (вот не спрашивайте, поджигается ли там смесь в двух сразу или поочерёдно, я всё-таки думаю, что поочерёдно). Чтобы всё это чудо не ходило ходуном, там вал с противовесами в обратную сторону крутят. На канале Ильдар автоподбор его разбирали, там владелец был недоволен динамикой, но его в тяжёлую машину 500L вкорячили, либо там ещё и 85 сил версия была до кучи. Но 105 сил лёгкому Фиату вполне хватает, в спорт режиме он за 10 секунд примерно до сотни разгоняется, и по автобану 200 из него выжать можно, что для литрового неплохо. А в эко-режиме он экономичный, если ехать аккуратно, то 4 c небольшим литра на сотню. Он старенький довольно, в 2011 получил награду "лучший мотор года". Звук при работе правда странный, почти как мотоцикл с погромыхивающими клапанами.
До кучи я иногда пользуюсь вот этими:
Relyze https://www.relyze.com/index.html
TotalPE2 https://github.com/zodiacon/TotalPE2
010 Editor https://www.sweetscape.com/010editor/
Мощно, спору нет. А разве голый кирпич не надо ничем снаружи облицовывать, он же вроде довольно пористый и влагу будет набирать будь здоров? В Гамбурге очень много "кирпичных" домов, это стиль такой, но если присмотреться, то там на самом деле не обычный кирпич, а "клинкер", типа специальный облицовочный, почти квадратный в сечении он как керамика обожжённая со слоем глазури, его обычно через слой теплоизоляции кладут.
С гитхабом тоже надо аккуратно, скажем тот же код LabVIEW (который графический) туда нечасто выкладывают просто потому, что гитхаб под него не слишком заточен и он просядет в рейтинге, опять же учёные не так часто гитхабом пользуются, так что долю того же MATLAB это тоже опустит немного. Тут что-то комбинированно-взвешенное надо.
Делал себе что-то похожее, когда учил французский, на LabVIEW правда. Но у меня были проблемы с восприятием на слух, так что я брал учебные тексты и диалоги с аудио рядом и делал воспроизведение по предложениям или словам с возможностью замедления воспроизведения (есть алгоритмы, позволяющие замедлить, но без изменения высоты тона). Правда с форматом не заморачивался, просто XML с маркерами времени, чтобы звук из wav брать и проигрывать. В принципе похожие программы есть, просто в каждой что-то да не устроило.
Я просто немного этой области "касаюсь" и вижу там всё больше тот же LabVIEW, вот ещё Фортран, и MATLAB/Octave/Maple, ну и Python в последнее время. Хотя возможно, моя выборка нерепрезентативна. Повод посмотреть на R повнимательнее, я никогда его не "трогал", честно говоря, хотя стараюсь быть в курсе и на всех из первой двадцатки что-то делал, кроме Ada и Swift, пожалуй.
Самое главное тут - LabVIEW с 32-го места переехал на 26-е, обогнав Julia и Kotlin, глядишь, так и в двадцатку войдёт! Вообще к этому рейтингу есть некоторые вопросы, я вот сильно не уверен, что R так уж популярен, но в общем топ 5 и так хорошо известен.
Попробовал на мультимониторной конфигурации - тоже работает, но почему-то окна при максимизации залетают под док, ровно тот же исполняемый файл но на одномониторном ноуте работает норм - при макисмизации они разлетаются только до границы и под док не залазят. Может быть проблема винды. Ну и уже понятно, что надо фильтровать окна - скажем у меня на левом мониторе обычно брааузер открыт и он ничем не перекрывается, и его превьюшка не нужна, ну а в режиме работы с LabVIEW хочется видеть только превьюшки от этой среды, а другие не нужны, но это легко можно допилить. В общем стандартные хотелки, которые можно самому доделать под себя.
Да, спасибо, стало лучше. Штука оказалась неожиданно удобная, сегодня заполнял налоговую - на экране дофига всего, и калькулятор, а в превьюшке виден последний результат, и эксель, и там увеличение при наведении мыши удобно. Дома у меня не очень большой экран, а на работе не так актуально, там у меня три монитора, из них два вертикальных, но тоже попробую.
Вы невнимательно коммент прочитали, не 18 кб, а "на 18 кб меньше". У автора исполняемый файл 2001К или 2.049.024 байт, а если просто заменить таргет с 11 на 10 в csproj и собрать вот ровно той же командой dotnet publish -c Release -r win-x64, то будет 1967К или 2.013.696 байт, то есть на 34 кб меньше. А 18 кб - это после того, как я скроллбар туда добавил. Кстати, его ещё и upx пожать можно, он не потеряет работспособности, а станет меньше мегабайта - 884224 байт всего.
А вот тут пишут, что в последних версиях и это может не работать https://learn.microsoft.com/en-in/answers/questions/2263244/extendeduihovertime-is-not-working-anymore, хотя там также и метод через gpedit.msc предлагается, но я с планшета коммент пишу, завтра на работе проверю, любопытно.
Ещё есть the Ghidra Book за авторством Chris Eagle и Kara Nance, недавно вышло второе издание. В конце там небольшое приложение для тех, кто знаком с IDA. Основное отличие, что Гидра как бы проектно ориентированная, ну то есть вначале надо создать проект, а потом импортировать туда бинарники для анализа (в четвёртой главе всё детально расписано), а в Иде просто открыли и погнали.
Я эту книгу прочитал в тот момент, когда уже вёл рукописные заметки несколько лет (в большей степени как инбокс для системы GTD Дэвида Аллена), и таким образом получил подтверждение, что всё делаю правильно. После прочтения чуть подкорректировал систему и стало совсем хорошо.
тут странно, я ваш же код скомпилял под 10 (свежеустановленную) и получилось даже на 18 КБ меньше, что-то там лишнего прицепилось.