Size: a a a

2020 September 27

OV

O V in pro.cxx
Может кто подсказать, пожалуйста?
источник

OV

O V in pro.cxx
Переслано от O V
Помогите расшифровать, пожалуйста. Что значат слова
СЕ вычисления, PE only и FE этап?
источник

OV

O V in pro.cxx
Переслано от O V
Нет, точно не так. СЕ – это что-то о компайлтайме, PE, насколько я понимаю, о ридонли секции... Наверно, не знаю расшифровки. И FE этап это какой-то этап компиляции
источник

AP

Antony Polukhin in pro.cxx
O V
Может кто подсказать, пожалуйста?
А дайте больше контекста
источник

OV

O V in pro.cxx
Antony Polukhin
А дайте больше контекста
Там, где я это читала, говорилось о констекспр функциях. И говорилось, что СЕ вычисления(вероятно, компайлтайм как-то) будут выполнены на этапе FE. Говорилось про кланг и LLVM
источник

P

PRoSToC0der in pro.cxx
Евгений Попов
Читал что в Go что-то подобное есть
там stackful корутины, это немного другое
источник

AT

Alexander Tulikov in pro.cxx
O V
Может кто подсказать, пожалуйста?
CE - constexpr, PE - partial evaluation, FE - front end. Говорилось, видимо, о том, как clang обрабатывает constexpr выражения при компиляции, но это не точно.
источник

OV

O V in pro.cxx
Alexander Tulikov
CE - constexpr, PE - partial evaluation, FE - front end. Говорилось, видимо, о том, как clang обрабатывает constexpr выражения при компиляции, но это не точно.
Спасибо! Partial Evaluation section? Ибо это был немного сторонний вопрос, просто видела и кажется, что так называют ридонли секцию, но непонятно
источник

AT

Alexander Tulikov in pro.cxx
O V
Спасибо! Partial Evaluation section? Ибо это был немного сторонний вопрос, просто видела и кажется, что так называют ридонли секцию, но непонятно
Нет, это механизм вычисления всего, что может быть вычислено на этапе компиляции.
источник

OV

O V in pro.cxx
Alexander Tulikov
Нет, это механизм вычисления всего, что может быть вычислено на этапе компиляции.
Благодарю
источник

AF

Aidar Fattakhov in pro.cxx
Bytearray
Добрый вечер. Кто-нибудь пытался на новых корутинах повторить питоновые генераторы? co_yield я ещё как-то освоил, интересует возможность илдить что-то с аргументом, полученным через co_await.
иными словами - повторить вот этот питоновый код:
>>> def double_inputs():
...     while True:
...         x = yield
...         yield x * 2
...
>>> gen = double_inputs()
>>> next(gen)       # run up to the first yield
>>> gen.send(10)    # goes into 'x' variable
20
кажется у тебя баг в питонокоде
источник

B

Bytearray in pro.cxx
Aidar Fattakhov
кажется у тебя баг в питонокоде
Да, там none через раз
источник

МК

Марк ☢️ Коренберг... in pro.cxx
А кто-нибудь юзает svace ?
источник

MB

Mikail Bagishov in pro.cxx
А что вы можете сказать про такую функцию?

template<typename T>
void launder(T* object) {
   // view to possibly uninit memory
   auto data = reinterpret_cast<byte*>(object);
   // create temporary file
   int fd = memfd_create();
   // write
   write(fd, data, sizeof(T));
   // seek to file beginning
   seek(fd, 0);
   // read data back
   read(fd, data, sizeof(T));
   // PROFIT: all bytes in object are now initialized
}
источник

MB

Mikail Bagishov in pro.cxx
Мне кажется, верно следующее:
1) Если ей передан указатель на инициализированный объект, ничего не происходит.
2) Если ей передан указатель на неинициализированный объект, после вызова он был проинициализирован каким-то значением.
3) Если в любую программу вставить вызов launder, ее наблюдаемое поведение не изменится (если поведение было определенным, оно таким и останется. А если было UB, то оно либо останется UB, либо заменится на какое-то вполне определенное, пусть и странное поведение, а это разрешено).
источник

MB

Mikail Bagishov in pro.cxx
Ну и да, эта функция это не std::launder. Та отмывает, насколько я понимаю, лайфтаймы указателей.
А эта отмывает неинициализированную память.
источник

OZ

Olzhas Zhumabek in pro.cxx
если объекты типа не инициализируют себя полностью, может стоит написать специфическую обертку для этого типа? если оно не применимо, то не-инициализированность наверное является фишкой?
источник

AF

Aidar Fattakhov in pro.cxx
Mikail Bagishov
А что вы можете сказать про такую функцию?

template<typename T>
void launder(T* object) {
   // view to possibly uninit memory
   auto data = reinterpret_cast<byte*>(object);
   // create temporary file
   int fd = memfd_create();
   // write
   write(fd, data, sizeof(T));
   // seek to file beginning
   seek(fd, 0);
   // read data back
   read(fd, data, sizeof(T));
   // PROFIT: all bytes in object are now initialized
}
это не launder
источник

AF

Aidar Fattakhov in pro.cxx
Mikail Bagishov
Мне кажется, верно следующее:
1) Если ей передан указатель на инициализированный объект, ничего не происходит.
2) Если ей передан указатель на неинициализированный объект, после вызова он был проинициализирован каким-то значением.
3) Если в любую программу вставить вызов launder, ее наблюдаемое поведение не изменится (если поведение было определенным, оно таким и останется. А если было UB, то оно либо останется UB, либо заменится на какое-то вполне определенное, пусть и странное поведение, а это разрешено).
2) мемкопи не инициализация
источник

OZ

Olzhas Zhumabek in pro.cxx
единственное применение я вижу если надо удостовериться что ОС отдала память и не зажала под себя до первой записи
источник