По идее транспортные доходы должны наоборот возрасти ну или такими же остаться. Ведь сборка конечных устройств (компьютеров, планшетов, телефонов) находиться там же где и была - в Азии. То есть сделанные чипы нужно будет вести туда, чтобы привезти обратно готовые устройства.
в этом месте CStr заменить на владеющий CString, и тогда этот unsafe{free} То есть даже этот изолированный кусок кода можно написать куда чище и понятнее, с куда меньшим количеством unsafe
Что-то я не вижу как это сделать. pam_getenvlist вызывается один раз. То есть написание оберток для OwnCStr и Iterator для char ** с теми же самыми unsafe в итоге даст то же количество "unsafe", а кода будет еще больше чем в исходном виде. Вот если нужно было где-то еще работать с char ** алоцированном с помощью malloc это было бы оправдано.
Во-первых, сам по себе интерфейс функции pam_getenvlist сомнителен.
Так это же "C" функция внешнего API. Если бы у них была возможность не пользоваться libpam, то они бы просто не пользовались "C API".
Во-вторых, предлагаю ознакомиться со списком зависимостей проекта.
Реальные зависимости покажет "cargo tree". В частности lazy_static и lazycell это зависимости bindgen, которые вообще в проект никаким образом не попадут, так являются "build-dependicies", то зависимостями для сборки, а не работы. То есть с их помощью компилируется "bindgen", который генерирует из заголовочных файлов C список Rust функций и все. В исполняемыми файлы "sudo" код из lazy_static, lazycell и так далее не попададет ни каким образом.
Теоретически можно делать два стека один под адреса возврата, другой под данные, но такого в процессоре физически нет
Ну для arm64 есть реализация "shadow call stack", это именно отдельный стек для адресов возврата. Так же там есть "Pointer Authentication". В Эльбрусе отдельный стек возврата реализован в процессоре.
Ждал этого комментария. Автора беспокоило отсутствие обновлений безопасностии для своего старого роутера и поэтому он купил дешевый китайский роутер. Довольно странная логика. Какие гарантии что с завода в него 10 клиентов разных ботнетов не установлены? Недавно на " Linus Tech Tips" был обзор дешевых Android китайских приставок для телевизоров и в каждой были следы руткитов, и каждый обращался к разным сайтам, похожим на управляющие сайты для ботнетов, сразу после включения.
Было интересно почитать про математику лежащую в основе первого приближения. Но код замеров времени выполнения какой-то настораживающий. Где забота об изменении частоты, использование счетчиков производительности процессора, усреднение результатов, выбрасование аномалий из подсчета и прочее. Ведь недаром есть библиотеки для микробенчамрков типа этой https://github.com/google/benchmark . И "undefined behaviour" в коде немного напрягает. Понятно что исторически код был написан так, но при замере производительности вызов mempcy для преобразования "float" в "int" и обратно привел бы к такому же ассемблерному коду, но "undefined behaviour" бы не было.
On Windows, the stream refers to a terminal if the expression GetConsoleMode(_get_osfhandle(_fileno(stream))) returns nonzero (see Windows documentation for GetConsoleMode, _get_osfhandle, and _fileno). The native Unicode API on Windows is WriteConsoleW.
И новый std::println соотвественно будет использовать "vprint_unicode".
без дополнительный действий со стороны программиста в Windows консоли напечатает нужный текст, так как C++ runtime определит с чем соединен stdout и вызовет, если нужно SetConsoleOutputCP(CP_UTF8); самостоятельно.
Ведомство задействует систему для обновления онлайн-руководств о том, как заполнять заявки на субсидии и другую государственную поддержку.
Ничего не понятно. Ну "загрузят" они в ChatGPT свои нормативные акты, и допустим ChatGPT поможет фермеру составить документ, а дальше что? Документ же пишут не просто так, а чтобы дальше послать его в это министерство и его приняли, как они гарантируют, что позиция чиновников, рассматривающих подданные документы, и ChatGPT будут согласованы по поводу того как нужно заполнять документы?
И собственно возникает вопрос а как они "загрузят" данные в ChatGPT, если его будут просто обучать на часто задаваемых вопросах типа как составить заявку такую-то с примером документа, то зачем здесь нужен вообще ChatGPT, просто нужен нормальный поиск по FAQ на их сайте и все.
ядро в ней, например, умеет у хоста забирать память при необходимости, и отдавать обратно при высвобождении, с дисками работает через специализированный интерфейс, и вообще вызывает сильно меньший оверхед, чем традиционная vm.
Так это просто VM с установленными "guest tools". Драйверы типа "memory balloon" давно почти все VM используют, ну и использование чего-то типа KVM VirtIO вряд ли дает право называться "легковесной".
Ну например поэтому https://habr.com/ru/news/729256/ . Но лично мне никакой софт, запускаемый только на Windows не нужен, а вот привычная ОС, как на работе очень даже нужна.
По идее транспортные доходы должны наоборот возрасти ну или такими же остаться. Ведь сборка конечных устройств (компьютеров, планшетов, телефонов) находиться там же где и была - в Азии. То есть сделанные чипы нужно будет вести туда, чтобы привезти обратно готовые устройства.
Вроде он известен тем, что хвалит все за что платят. Про язвительные комментарии ни разу не слышал, это нейросеть такой текст "наглючила"?
Что-то я не вижу как это сделать.
pam_getenvlistвызывается один раз. То есть написание оберток дляOwnCStrиIteratorдляchar **с теми же самыми unsafe в итоге даст то же количество "unsafe", а кода будет еще больше чем в исходном виде. Вот если нужно было где-то еще работать сchar **алоцированном с помощьюmallocэто было бы оправдано.Так это же "C" функция внешнего API. Если бы у них была возможность не пользоваться libpam, то они бы просто не пользовались "C API".
Реальные зависимости покажет "cargo tree". В частности lazy_static и lazycell это зависимости bindgen, которые вообще в проект никаким образом не попадут, так являются "build-dependicies", то зависимостями для сборки, а не работы. То есть с их помощью компилируется "bindgen", который генерирует из заголовочных файлов C список Rust функций и все. В исполняемыми файлы "sudo" код из lazy_static, lazycell и так далее не попададет ни каким образом.
Совсем совсем бесплатно? Лечение травм как я понимаю за ваш счет?
А сборки для эльбруса с PGO?
Ну для arm64 есть реализация "shadow call stack", это именно отдельный стек для адресов возврата. Так же там есть "Pointer Authentication". В Эльбрусе отдельный стек возврата реализован в процессоре.
"borrow checker" никак не выключается. "unsafe" здесь не поможет.
У автора все-таки C, а не C++ в в примерах. Поэтому как я писал memcpy является способом преобразования int в float и обратно без UB.
Ждал этого комментария. Автора беспокоило отсутствие обновлений безопасностии для своего старого роутера и поэтому он купил дешевый китайский роутер. Довольно странная логика. Какие гарантии что с завода в него 10 клиентов разных ботнетов не установлены? Недавно на "
Linus Tech Tips" был обзор дешевых Android китайских приставок для телевизоров и в каждой были следы руткитов, и каждый обращался к разным сайтам, похожим на управляющие сайты для ботнетов, сразу после включения.
Было интересно почитать про математику лежащую в основе первого приближения. Но код замеров времени выполнения какой-то настораживающий. Где забота об изменении частоты, использование счетчиков производительности процессора, усреднение результатов, выбрасование аномалий из подсчета и прочее. Ведь недаром есть библиотеки для микробенчамрков типа этой https://github.com/google/benchmark . И "undefined behaviour" в коде немного напрягает. Понятно что исторически код был написан так, но при замере производительности вызов mempcy для преобразования "float" в "int" и обратно привел бы к такому же ассемблерному коду, но "undefined behaviour" бы не было.
https://en.cppreference.com/w/cpp/io/vprint_unicode
И новый
std::printlnсоотвественно будет использовать "vprint_unicode".Я об этом узнал на cppcon: https://youtu.be/eD-ceG-oByA?t=4925
Вроде бы это в C++23 обещали починить и:
без дополнительный действий со стороны программиста в Windows консоли напечатает нужный текст, так как C++ runtime определит с чем соединен stdout и вызовет, если нужно
SetConsoleOutputCP(CP_UTF8);самостоятельно.Десерты, которые по утверждению заведения разработаны ИИ есть, осталась только туалетная бумага, чтобы замкнуть круг.
ThinkPad нынче ведь тоже китайцы делают. То есть у ноутбуков Lenovo все хорошо с поддержкой, или это только для ThinkPad китайцы стараются?
Ничего не понятно. Ну "загрузят" они в ChatGPT свои нормативные акты, и допустим ChatGPT поможет фермеру составить документ, а дальше что? Документ же пишут не просто так, а чтобы дальше послать его в это министерство и его приняли, как они гарантируют, что позиция чиновников, рассматривающих подданные документы, и ChatGPT будут согласованы по поводу того как нужно заполнять документы?
И собственно возникает вопрос а как они "загрузят" данные в ChatGPT, если его будут просто обучать на часто задаваемых вопросах типа как составить заявку такую-то с примером документа, то зачем здесь нужен вообще ChatGPT, просто нужен нормальный поиск по FAQ на их сайте и все.
Так это просто VM с установленными "guest tools". Драйверы типа "memory balloon" давно почти все VM используют, ну и использование чего-то типа KVM VirtIO вряд ли дает право называться "легковесной".
Теперь эта фишка устарела. Есть https://www.freedesktop.org/software/systemd/man/systemd-oomd.service.html и его аналоги. И отстрел сильно жрущих память процессов начинается намного раньше момента когда система станет жутко лагать.
Ну например поэтому https://habr.com/ru/news/729256/ . Но лично мне никакой софт, запускаемый только на Windows не нужен, а вот привычная ОС, как на работе очень даже нужна.
Достаточно много русских разработчиков вносили свой вклад и в ядро, и в компиляторы и прочее ПО. "Opensource" довольно интернационален.
Так wsl2 и есть виртуалка, это в wsl1 была трасляция вызовов.