Цель разработки компилятора – полная совместимость с синтаксисом языков Си и С++ при обеспечении полной безопасности работы с памятью. Заявляется, что для использования достаточно пересобрать существующий код, так уже компилируются и работают bzip2, zip, pcre и ncurses. С незначительными модификациями поддерживается сборка OpenSSH, OpenSSL, CPython, SQLite, Lua, Curl, Lynx, jpeg6b, zsh, xzutils и simdutf.
Проект развивает Робин Роу (Robin Rowe), бывший профессор компьютерных наук, принимавший участие в комитетах по развитию стандартов С и С++, в своё время создавший графический редактор Cinepaint, использовавшийся при создании некоторых голливудских фильмов, и POSIX-библиотеку libunistd для Windows. Соучредителем компании Trasec выступает Габриэль Пантера (Gabrielle Pantera), занимавшая руководящий пост в компании Disney.
Из особенностей:
Проверки выхода за границы массива. В TrapC применяется фундаментально иной способ работы с указателями и специальный механизм перехвата ошибок на основе обработчиков исключений (trap).
Проверки use after free.
Наличие GC.
Выделение памяти через new. *alloc и free нет.
Явная инициализация нулями.
Строгая типизация.
Исходный код компилятора для TrapC планируют открыть в 2025 году.
В опубликованных на днях исходных текстах мультимедийного проигрывателя Winamp обнаружено заимствование кода, распространяемого под лицензиями GPL и LGPL. В частности, среди кода Winamp присутствовали файл fir_proc.cpp, кодировщик BladeMP3, плагин in_vorbis и компоненты генератора парсеров GNU Bison, распространяемые под лицензией GPL. Кроме того, в составе поставлялся изменённый код библиотеки libdiscid 0.6.2, распространяемой под лицензией LGPLv2.1. В репозитории Winamp также найдены бинарные сборки открытых библиотек libogg и vorbis, добавленные без указания лицензии.
Но не переходят, а только планируют, в течении трёх лет. А там или ишак или падишах, как в известной байке. О том, будет ли переведено существующее ПО на линукс в котором ведётся работа об этом новость не сообщает.
В целом после прочтения новости на опеннете складывается впечателение, что раст это секта, по типу протестанских сект, но вместо десятины - заставляют учить и писать на этом, только вчитайтесь:
Ушедший сопровождающий, который подключился к проекту 4 года назад, является сотрудником компании Microsoft и автором экспериментального драйвера с реализацией ФС EXT2, написанного на языке Rust
Экспериментальный драйвер очень нужной фс от работоспособного разраба:
В этом году Алмейда внёс в репозиторий Rust-for-Linux 17 коммитов
В качестве причины ухода упоминается нехватка сил и энтузиазма, которые когда-то были для реагирования на некоторые бредни нетехнического характера (nontechnical nonsense).
У них там какой-то филиал двача досок /pr/ и /gay/
Закономерно те кто тащат ядро линукса слегка офигивают, то есть это они должны писать на расте, а не вот эти банальные клоуны изучать внутреннее устройство и слать патчи.
автор файловых систем ext2/ext3/ext4, который сравнил инициативу Rust-for-Linux c попыткой заставить всех принять религию Rust.
Ну и в конце место для традиционной перемоги: барен что-то там переписал на расте.
Насладиться техническими подробностями нового выпуска и немного охренеть с поведения растоманов тут.
В книге Седжвика. «Фундаментальные алгоритмы на С++» предлагается такая сортировка:
template <class Item>
void fixDown(Item *a, int k, int N)
{
while (2 * k <= N)
{
int j = 2 * k;
if ((j < N) && (a[j] < a[j + 1]))
j++;
if (a[k] > a[j])
break;
std::swap(a[k], a[j]);
k = j;
}
}
template <class Item>
void heapsort(Item *a, int l, int r){
int k, N=r-1+1;
Item *pq = a+1-1;
for(k=N/2;k>=1;k--)
fixDown(pq, k, N);
while (N>1)
{
std::swap(pq[1], pq[N]);
fixDown(pq, 1, --N);
}
}
И всё бы хорошо, сортирует полюбому быстро за O(N lgN), памяти дополнительной не требует, но есть неприятный нюанс:
Если сгенерить такой массив, такой функцией.
int len=2300000;
auto array=generantion_array(0, 23000000,len);
int *generantion_array(int min, int max, int len)
{
std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(min, max);
int *array = new int[len];
for (int i = 0; i < len; i++)
{
array[i] = distribution(generator);
}
return array;
}
Microsoft продолжит сопровождение более современного форка Mono Runtime, включённого в состав кодовой базы открытой платформы .NET. Планируется постепенно перевести на данный форк компоненты проектов Microsoft, остающиеся завязанными на Mono. Компания Microsoft также заявила, что рекомендует пользователям приложений, использующих Mono, перейти на использование общей платформы .NET, включающей Mono Runtime.
А все потому что людишки на разработчиках не видят нужды в изучении бесполезной технологии, которая является ещё и нестабильной. Наверное что-то подозревают.
Здравствуйте любители опенсорса и им сочувствующие.
Во исполнении майских указов президента в нашей стране создаётся инновационная игровая консоль с хитами пятнадцатилетней давности, такими, как Portal, GTA 3, GTA Vice City, Doom 3, Half-Life 2, Quake 4, CS Go.
О цене уважаемые господины скромно делают оценки о районе пятидесяти тысячах рублей по цене комплектующих, так же очевидно, что наценку таки надо навернуть, но я надеюсь, что им удастся получить бюджетное финансирование для снижения стоимости, чтобы забарывать тлетворное влияние sjw современных игр на неокрепшие детские умы. Или во всяком случае банки будут давать льготные кредиты родителям, чтобы их чады могли насладиться игрой на приставке.
По ссылке есть видео, которое можно посмотреть не прибегая к магическим ухищрениям для того, чтобы омолодить cache-сервера ютуба.
Недавно главный выгодополучатель от текущей ситуации в стране, выпустил IDE и на хабре вышел обзор, позволю себе тезисно по нему пробежаться:
Cloud версия - це vscode. Ибо нефиг.
Десктопная версия це IDEА.
В десктопной версии сбербанковской ide заявляется поддержка java, kotlin, spring boot.
Декларируется в этой gigaide (скромненько так) поддержка этих языков и фреймворков на уровне ultimate idea. Заявляется поддержка субд: оракл, постргре, mysql и sqlite.
Все эти фичи вынесены в отдельный плагин Amplicode, который можно использовать и с idea community.
Но естественно, скачать свободно нельзя. Не тебе, анон, платящий проценты этому банку, свободно пользоваться его услугами.
gpu.cpp — лёгкая переносимая библиотека для вычислений на графических сопроцессорах. Для работы требуется только компилятор C++, поддерживающий стандарт С++17 (разработчики почему-то настаивают на clang), и сама библиотека. Заявляется работа на любых устройствах, поддерживающих Vulkan, Metal, или DirectX.
Дополнение: Опубликован пример org-файла, открытие которого в Emacs вызывает выполнение shell-команд. Для эксплуатации уязвимости также можно прикрепить подобный файл к email и он будет выполнен при предпросмотре в Emacs.
Отличие от vs code в том, что подобный скрипт будет выполняться не в песочнице, а в системе пользователя с правами пользователя.
Как и следовало ожидать, rm -rf ~/ в письме - для пользователей этой штуки - «это другое, понимать надо». А то чтобы запросить запуск левого скрипта с почты - это «ненужно».
Эндрю Таненбаум стал обладателем премии ACM Software System Award, ежегодно присуждаемой Ассоциацией вычислительной техники (ACM), наиболее авторитетной международной организацией в области компьютерных систем. Премия присуждена за создание операционной системы MINIX, которая использовалась при обучении нескольких поколений студентов принципам разработки операционных систем и внесла вклад в разработку широко распространённых операционных систем, включая Linux.
Награда ACM Software System Award ежегодно вручается за разработку программных систем, оказавших определяющее влияние на отрасль, внеся в обиход новые концепции или раскрывших новые области коммерческого применения. Размер премии 35 тысяч долларов США. В прошлые годы премии ACM были присуждены проектам GCC и LLVM, и их основателям Ричарду Столлману и Крису Латнеру. Премией также были отмечены такие проекты и технологии, как UNIX, Java, Apache, Mosaic, WWW, Smalltalk, PostScript, TeX, Tcl/Tk, RPC, Make, DNS, AFS, Eiffel, VMware, Wireshark, Jupyter Notebooks, Berkeley DB, seL4, и Eclipse.
Наткнулся на хабре на пост о rust и несколько прифигел:
fn main() {
let original_owner = String::from("Something");
let new_owner = original_owner;
println!("{}", original_owner);
}
Афтор пишет, что подобный код вызавет ошибку в rust, а чому так оно же в одном блоке видимости все происходит, чому rust затирает переменную буквально сразу после присваивания?
Чего ради это сделано?
Попробовал такое же на java и никакой ошибки нет, код компилируется и выполняется:
public static void main(String[] args) {
String original_owner = new String("Something");
String new_owner = original_owner;
System.out.println(original_owner);
}
Отсутствие классов отдельный рофл: давайте получать экземляры объектов не на уровне класса, а на уровне метода, в который напихаем ещё пачку методов и побольше. Зато нет наследования, да.
более 24 тысяч (19.11%) используют ключевое слово «unsafe»
А ведь говорили, что раст закопали, однако врали?
для включения возможностей, допускающих небезопасную работу с памятью в отдельных блоках кода, таких как разыменование указателей, вызов внешних функций или изменение статических переменных. 34.35% пакетов совершают прямые вызовы функций из других crate-пакетов, в которых используется «unsafe».
Отмечается, что в большинстве случаев использование «unsafe» обусловлено вызовом кода, написанного на других языках или обращения к библиотекам на С/C++. Пакетом с наибольшим числом вызовов в контексте «unsafe» признан развиваемый компанией Microsoft crate-пакет windows, являющийся обвязкой над API платформы Windows. Данный пакет насчитывает 36 млн. загрузок.
Уэдсон Алмейда Фильо (Wedson Almeida Filho) из компании Microsoft предложил для обсуждения в списке рассылки разработчиков ядра Linux вторую версию патчей с набором обвязок над подсистемой VFS, предназначенных для разработки на языке Rust файловых систем, работающих в режиме только для чтения. Вместе с обвязками опубликовано два созданных на их основе драйвера с реализацией файловых систем ext2 и tarfs, работающих в режиме только для чтения. В отличие от ранее доступной реализации ФС Ext2 на языке Rust - ext2-rs, новый вариант работает на уровне ядра (модуль rust_ext2), а не в пространстве пользователя. Драйвер rust_ext2 содержит около 700 строк кода на Rust и может использоваться в качестве отправной точки для разработки более сложных реализаций ФС, таких как Ext4.
Файловая система tarfs позволяет монтировать архивы в формате Tar в виде файловой системы. Драйвер использует прикреплённый к tar-файлам индекс для навигации по файлам внутри архива без перебора всего содержимого.
Отдельно развивается ещё одна ФС на языке Rust, которая использует предложенный слой абстракций, - PuzzleFS. PuzzleFS предназначена для размещения изолированных контейнеров и обладает такими возможностями, как эффективное хранение дублирующихся данных, возможность прямого монтирования, повторяемая сборка образов, очень быстрая сборка и монтирование образов, возможность использования необязательной промежуточной стадии для преобразования (canonicalization) образов, необязательность полных проходов по дереву ФС при использовании многослойной структуры и наложение изменений в стиле casync.