Anonymous
Не помогает.
Alexander "SonnySlave"
никто не знает VS2017 между апдейтами бинарно совместима? То есть бинарь, собранный с VS2017 15.0 будет нормально линковаться с бинарём от VS2017 15.5?
Vladislav
что значит "бинарь будет нормально собираться"? Если из исходников, то это не бинарная совместимость
Vladislav
или ты про линковку?
Alexander "SonnySlave"
Viacheslav
In Visual Studio 2015 and Visual Studio 2017, the C++ toolset major number is 14 (v140 for Visual Studio 2015 and v141 for Visual Studio 2017). This reflects the fact that both the runtime libraries and the applications compiled with either version of the compiler are--for the most part--binary compatible.
И, насколько я помню, STL на reddit писал, что пока внутренняя версия 14, всё будет совместимо.
Yana
Всем привет! Коллеги, есть ли среди вас те, кто работает не в Москве, а в любом другом городе вместе со своей командой, и кто находится в поисках работы не только для себя, но и для своей группы/отдела?
Igor
kitsu
Можно как-нибудь выкидывать compile-time error при компиляции асма (especially gnu/gcc) в не PIC-код?
kitsu
Igor
тогда я видимо не совсем понял вопрос
kitsu
Ну есть ассемблерный код, который потенциально может быть не PIC, e.g:
mov %eax, my_var ; вместо-> mov %eax, my_var(%rip)
Вот хочется подобный код искать на этапе преобразования этого кода в объектный файл, а не на этапе линковки
Igor
код возникает из ассемблерных вставок, из результатов трансляции, или просто из исходников написанных на асме?
kitsu
последнее
Igor
оу, тогда ничего не могу сказать(
kitsu
Есть подозрение, что вставки при -fPIC должны выдавать ошибку компиляции; тут все тривиально
Evgenii
или собираться и работать как получится
Vsevolod
@kitsu а как ты делаешь не pic код в x86_64 режиме?
Vsevolod
у меня на это gcc сразу ругался, например
Vsevolod
ну то есть, в x86_64 в ассемблере из-за rip addressing PIC получается автоматом, а сделать иначе будет миниум варнинг от компилятора, а, возможно, и ошибка - не помню
kitsu
Vsevolod
вот, нашел письмо старое
Vsevolod
Please note, that I've changed your code slightly as you cannot load labels using 32-bits absolute address in 64-bits mode (so you'd need to use something like movq constant(%rip),%rax instead of movq constant,%rax). Gnu assembler is not strict about this issue, but clang refuses to compile it.
Vsevolod
значит, собирал это на макоси шлангом
Vsevolod
(простите за мой безграмотный английский)
Alexander "SonnySlave"
сейчас @isenbaev придёт и отругает
Timur
ну т.е. имеем:
- gas не знает ничего про -fPIC и писатель на ассемблере сам себе бог и может вставить любую ссылку;
- gcc/clang получают -fPIC при компиляции кода, и проносят это в ld
- тогда линкер при сборке shared модуля должен обозваться на неправильный фиксап, типа
relocation R_X86_64_32S against `var1' can not be used when making a shared object; recompile with -fPIC
и если в ассемблере вы имеете не %rip адресацию то надо смотреть на конкретный случай и смотреть тип получаемого fixup в объектнике
Vsevolod
да, ровно такая ошибка и была
kitsu
угу, проблема при линковке есть, хочется при компиляции
Timur
при компиляции gas-ом вряд ли получится, вот через пост-процессинг (а линкер тот же постпроцессор в данном случае) можно сделать
kitsu
эх, жаль
Timur
если нужен ранний feedback (сразу после компиляции объектника из асма), то берете redelf/objdump смотрите типы релокейшенов, которые не хотите получать. оформляете как скрипт - запускаете в пачке с ассемблером.
Daria
Добрый день! Друзья, скажите, можно ли здесь публиковать вакансию?)
Max
Вакансии - в лс @AlexFails.
Max
так в описании группы написано, по крайней мере
Daria
А, увидела, спасибо)
Roman
Вики меня запутала, себя запутала, поэтому Вопрос: С++ поддерживает функциональное программирование ?
Egor
В целом да, но не с таким приятным синтаксисом, как это делают некоторые другие языки. Ну и вся стандартная библиотека под ФП скорее не заточена, так что нужно что-то сторонее (тот же Boost местами вполне себе функциональный по слухам)
Vsevolod
нет, гораздо проще ответить на вопрос: является ли функция объектом первого рода - можно ли вернуть функцию из функции или принять функцию в виде аргумента
Vsevolod
и ответ на этот вопрос: нет
Vsevolod
принимаются либо указатели, либо врапперы
Vsevolod
даже лямбды - это объекты с определенной семантикой, а не функции в чистом виде
Anatoly
Pepe 🐸
Vsevolod
ну, необходимым свойством функционального языка является именно это
Roman
различие в галочке: поддерживает парадигму или нет ...
Roman
Vsevolod
она чисто концептуальная :)
Никита
Никита
Достаточно сахара
Vsevolod
ну а какой должен быть побочный эффект? если язык работает в терминах композиций функций, то он функциональный, а если он считает функции рефренсами, указателями или же объектами, то он нефункциональный
Vsevolod
но писать на нефункциональном языке можно и в функциональном стиле, только, зачастую, очень кондово
Aleksander
на шаблонах поди вполне можно в функциональном стиле
Vsevolod
шаблоны - это вообще декларативный язык
Egor
Нуу, там не то чтобы функциональный, там скорее всё просто иммутабельное.
Vsevolod
система логического вывода, пролог, make, вот это все
Vsevolod
нет, иммутабельность - это вообще из другой оперы
Egor
Окей, что-то из логического там тоже что-то есть из-за сопоставления типов и специализаций.
Vsevolod
где там? в шаблонах только это и есть
Дмитрий ⬡
Ну по своей природе шаблоны ближе к лямбда-исчислению, чем к Тьюрингу
Vsevolod
не уверен насчет близости. SFINAE - это механика логического ЯП
Vsevolod
ну и подстановки в целом
Pepe 🐸
Vsevolod
какой тип?
Vsevolod
lambda closure оно unspecified по стандарту
Vsevolod
пролог - логический язык
Vsevolod
лямбды тут при том, что если ты возвращаешь функцию, то в терминах c++ возвращается объект или указатель
Vsevolod
но не функция
Vsevolod
опять же: различие концептуальное
Vsevolod
конечно, не один и тот же
Roman
1) это адрес 2) это адрес в ячейке)
Roman
раннее связывание и позднее
Vsevolod
auto func() { return [](){ return 42; }; } - во что отрезолвится auto
Vsevolod
в указатель?
Roman
или в каком плане - одно и тоже ?
Roman
эм