

Alexander
15.08.2017
23:38:51
The complexity of our versioning story is admittedly a freight train colliding with a dumpster fire orbiting a supernova. Here's the simple form:
* There are two IDEs, VS 2015 (which was updated several times) and VS 2017 (also updated several times so far).
* Each IDE shipped with a corresponding toolset. VS 2015 shipped with toolset v140 (compiler 19.00) and VS 2017 RTM shipped with toolset v141 (compiler 19.10).
* The VS 2017 IDE which ordinarily uses the v141 toolset has the ability to install and use the v140 toolset, without the VS 2015 IDE itself being installed.
* From now on, I will mostly ignore the IDEs and focus on the toolsets (and I will try to be careful to use toolset/compiler versioning - through metonymy I usually refer to toolset versions by their corresponding IDE versions but that isn't a good idea here).
* The v140 toolset (compiler 19.00) uses the Universal CRT in Windows (ucrtbase.dll) and additional DLLs that are part of the VCRedist: vcruntime140.dll, msvcp140.dll, etc.
* We updated the v140 toolset a few times, fixing bugs and (notably) adding features. (These shipped alongside the VS 2015.1, 2015.2, and 2015.3 IDEs.) All updates were binary-compatible and updated the DLLs in-place. This was true even for major updates like fixing the dreaded iostreams floating-point performance regression.
* The v141 toolset (compiler 19.10, originally) still uses ucrtbase.dll, vcruntime140.dll, msvcp140.dll, etc. It is binary-compatible with the v140 toolset, and objects/libs/DLLs can be intermixed freely. That said, it is still a good idea to compile everything consistently with the latest toolset so you receive all correctness/performance fixes, but mixing versions won't trigger crashes or other misbehavior.
* We just updated the v141 toolset, which can be identified by its compiler version (the VS 2017 15.3 IDE update installs a new v141 toolset with compiler 19.11). Again, we've added new features while preserving bincompat.
We're going to a LOT of trouble to preserve binary compatibility, so we hope it is useful. (We are having to be careful when updating the STL - any header change essentially triggers an ODR violation when object files are mixed-and-matched but there are innocuous ODR violations and poisonous ODR violations, and we know how to tell the difference.)
STL


Vladislav
16.08.2017
00:13:06
Предлагаю пройти к админам чата в личку и спросить, зачем они спамят?
@NikitaYrko
@sabcoin

Даниил
16.08.2017
00:26:22

Vladislav
16.08.2017
00:26:48

Google

Даниил
16.08.2017
00:27:28
можно скрин плес
а то он отрицает (один из них)

Vladislav
16.08.2017
00:29:08

Даниил
16.08.2017
00:29:53
спс

Zaur
16.08.2017
01:52:55
Хэй, всем привет. Киньте линк на чат для java, пожалуйста.

fox.cpp
16.08.2017
02:10:20
вообще, явка — фу, го в C++)

Zaur
16.08.2017
02:12:20

Влад
16.08.2017
05:04:47
Java кстати вообще не понравилась, даже при том, что С# нравится.

Норман
16.08.2017
05:07:15
а мне typescript понравился
получился какой-то java-java-script

Anton
16.08.2017
05:32:16
?

Google

Anatoly
16.08.2017
05:33:51
Эйнштейн?

Anton
16.08.2017
05:34:21
+

Matwey
16.08.2017
07:33:45
Господа, а где узнать полный список pro. чатов?

Даниил
16.08.2017
07:34:30
вот вроде: https://t.me/proDOT

Ned Ogl
16.08.2017
09:47:03
/help@FailsBot

Danylo
16.08.2017
10:51:00
найса

Alex Фэils?︙
16.08.2017
10:52:31

Antony
16.08.2017
10:54:35
Тут интересная тема всплыла в https://stdcpp.ru/proposals/59665faf-bdfe-4182-9d36-46f7d39feb4f
Хочется сделать так, чтобы guaranteed copy elision работал "сквозь" вызов функции: godbolt.org/g/V3edfK
Проблема в том, что если мы передаём prvalue в функцию, оно становится xvalue. Это убивает guaranteed copy elision + при этом меняется последовательность вызовов.
foo function(); // returns prvalue
void func1(foo&& f) { // f is an xvalue
foo f0 = std::move(f);
}
Есть идеи, как скрестить слона со свиньёй, ничего не поломав?

Nik
16.08.2017
10:57:14

Александр
16.08.2017
11:03:40

Alex Фэils?︙
16.08.2017
11:08:41


Antony
16.08.2017
11:20:54
При инлайне функции првалуе остается им?
Неа. Вот можно попробовать на это завязаться. Но поломает пользовательский код:
struct foo {
foo() { std::this_thread::sleep_for(10s); }
};
inline insert_foo(foo&& f) {
std::unique_lock l(mutex);
data.insert(std::move(f))
}
Если оставлять prvallue, то 10 секунд мы будем спать под локом. Теперешнее поведение - 10 секунд спим, потом под локом вставляемся

Square
16.08.2017
11:46:23
там актуальнее

FailsBot
16.08.2017
13:02:36
/help@FailsBot
USAGE:
/help - prints this message;
/vzhuh [message] - do vzhuh;
/start - info about bot.

Денис
16.08.2017
13:18:59
/vzhuh@FailsBot

FailsBot
16.08.2017
13:19:00
∧_∧
( ・ω・。)つ━☆・*。
⊂ ノ ・゜+.
しーJ °。+ *´¨)
.· ´¸.·*´¨) ¸.·*¨)
(¸.·´ (¸.·'* ☆

Danylo
16.08.2017
13:21:29

FailsBot
16.08.2017
13:25:22
∧_∧
( ・ω・。)つ━☆・*。
⊂ ノ ・゜+.
しーJ °。+ *´¨)
.· ´¸.·*´¨) ¸.·*¨)
(¸.·´ (¸.·'* ☆

Ilia
16.08.2017
13:25:46
А что это ?

Google

Admin
ERROR: S client not available

Pavel
16.08.2017
13:26:10
/vzhuh@FailsBot Это вжух!!!

FailsBot
16.08.2017
13:26:10
∧_∧
( ・ω・。)つ━☆・*。
⊂ ノ ・゜+.
しーJ °。+ *´¨)
.· ´¸.·*´¨) ¸.·*¨)
(¸.·´ (¸.·'* ☆ Это вжух!!!

Alex Фэils?︙
16.08.2017
13:26:21
#flood

Group Butler [beta]
16.08.2017
13:26:26
#flood
Предлагаю обсудить во флудилке (@fludpac)

Igor
16.08.2017
13:57:09
#offtop: ни у кого нет под рукой хайреса этого чуда?) именно исходной фотки, не перепечатки

有希
16.08.2017
13:59:06
Я пытаюсь разобрать это, но компилятор не понимает конструкцию (&&$<&&_)
Я, кстати, тоже не понимаю

Azoyan
16.08.2017
13:59:28

Kostya
16.08.2017
14:00:03
*g++

Evgeniy
16.08.2017
14:00:07

Tom
16.08.2017
14:00:18

Igor
16.08.2017
14:00:27

有希
16.08.2017
14:02:39
Ну, я могу понять (&$ <&_), но два раза && зачем?

Александр
16.08.2017
14:02:51
&& - оператор взятия адреса метки в gcc

有希
16.08.2017
14:02:58
Круть