<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/library/cpp/yt/misc, branch CLI_2.18.0</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=CLI_2.18.0</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=CLI_2.18.0'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2024-12-14T07:37:43Z</updated>
<entry>
<title>Introduce (any use) YT_STATIC_INITIALIZER</title>
<updated>2024-12-14T07:37:43Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2024-12-14T07:23:55Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=c3657504c642129865fc8cfdeacb98ef2da8d830'/>
<id>urn:sha1:c3657504c642129865fc8cfdeacb98ef2da8d830</id>
<content type='text'>
commit_hash:7d3055f901a21e63f7860f443252a86e9895fd08
</content>
</entry>
<entry>
<title>Fix various issues</title>
<updated>2024-12-06T09:44:32Z</updated>
<author>
<name>pogorelov</name>
<email>pogorelov@yandex-team.com</email>
</author>
<published>2024-12-06T09:28:22Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=347c99aa0858db7f96def6168af25f36485a02b3'/>
<id>urn:sha1:347c99aa0858db7f96def6168af25f36485a02b3</id>
<content type='text'>
commit_hash:50f729d3716d8b1f5b852cfc008e228172fb79c4
</content>
</entry>
<entry>
<title>YT-22885: Handle unknown values in (Try)CheckedEnumCast</title>
<updated>2024-11-16T17:48:13Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2024-11-16T17:38:23Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=e0ece3a670de1090fcb097575f087364742a9ef6'/>
<id>urn:sha1:e0ece3a670de1090fcb097575f087364742a9ef6</id>
<content type='text'>
commit_hash:5ce8019253cdb971d1af36350e3efa3a4ec8545c
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2024-11-08T16:54:05Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2024-11-08T16:42:27Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=ee58aeee73246a71e873abd822d7c7ba14431621'/>
<id>urn:sha1:ee58aeee73246a71e873abd822d7c7ba14431621</id>
<content type='text'>
commit_hash:17dbd6d7e5fc440afa2d816e245a73e25135bfb5
</content>
</entry>
<entry>
<title>YT-21233: Rewrite ConvertTo CPO using TagInvoke</title>
<updated>2024-11-08T16:28:18Z</updated>
<author>
<name>arkady-e1ppa</name>
<email>arkady-e1ppa@yandex-team.com</email>
</author>
<published>2024-11-08T16:15:54Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=69ea2aad0490aa3b45a377306f29d0e94876ee68'/>
<id>urn:sha1:69ea2aad0490aa3b45a377306f29d0e94876ee68</id>
<content type='text'>
Plan:

 1) Remove `IAttributedDictionary` type from the public API. \+

 2) Remove `Set` method from public API in favor of `operator&lt;&lt;=`. \+

 3) Adopt `ConvertTo&lt;T&gt;` (or other name) CPO with proper extension into `NYT::NYson::ConvertTo` from `yt/core`.

 4) Use CPO from (3) to eliminate direct dependency on `yt/core` of `Get/Find` methods from attributes API.

 5) Adopt `ConvertToYsonString` (or other name) CPO with proper extension into `yt/core` customisations.

 6) Use CPO from (5) to eliminate direct dependency on `yt/core` of `TErrorAttribute` ctor.

 7) Swap attributes implementation to the one which doesn’t use `IAttributeDictionary`.

 8) At this point `stripped_error*` can be moved to library/cpp/yt and so can recursively dependant on THROW macro methods `Get/Find/…`.

 9) Adjust CPO’s to work with `std::string` instead of `TYsonString` assuming text format to be used (maybe `TString` for now).

10) Remove dep of `library/cpp/yt/error` on `yson` entirely.

This pr addresses 3-4 steps of plan. Below is a brief explanation of design decisions.

We want to have a concept which detects if there is a `ConvertTo` method and if true, try calling it. Templates can only perform unqualified name lookup and if we allow non-ADL overloads to be found, we would have dependency on inclusion order (if `ConvertTo` is included prior to our code, everything works fine, but if the order is reverse, templated dispatch would fail, but direct call would work just fine). That is why we adopt niebloids which first disable ADL lookup of the name `ConvertTo` by directing it to niebloid implemented via `TagInvoke` mechanism. TagInvoke design &lt;https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1895r0.pdf&gt; . TL;DR: we want to have behavior which is consistent with inclusion order.

Key difference now is that `ConvertTo` works consistently in both manual calls and template function body calls and is no longer visible for ADL part of the unqualified name lookup
commit_hash:32af641bd0af559bfe670c2ceb36721fb4afc2dd
</content>
</entry>
<entry>
<title>NaN-safe comparison and hashing</title>
<updated>2024-11-06T10:54:01Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2024-11-06T10:24:38Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=b60a78031c047a8c8543bf6a3dc4f828d104dd3c'/>
<id>urn:sha1:b60a78031c047a8c8543bf6a3dc4f828d104dd3c</id>
<content type='text'>
commit_hash:46d59ab3acbd313753d3e46f3a6f10a8ebc424d8
</content>
</entry>
<entry>
<title>YT-22885: Refactor checked casts</title>
<updated>2024-11-03T12:13:18Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2024-11-03T12:01:37Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=1d9c1fe4155c9fbc93a2b08754643f38b2d8a9e6'/>
<id>urn:sha1:1d9c1fe4155c9fbc93a2b08754643f38b2d8a9e6</id>
<content type='text'>
commit_hash:7f7600d332c3ddb5c8372e921bcba3b4fbed68f8
</content>
</entry>
<entry>
<title>Add GetAllSetValue and IsKnownValue</title>
<updated>2024-10-27T16:11:40Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2024-10-27T15:54:07Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=1c41d6078d76a7a377b39d42e99aac3aa034479d'/>
<id>urn:sha1:1c41d6078d76a7a377b39d42e99aac3aa034479d</id>
<content type='text'>
commit_hash:cbc39112d8384b8c4bcd2410f0a203466b400c10
</content>
</entry>
<entry>
<title>YT-22885: DEFINE_ENUM_UNKNOWN_VALUE, string-related conversions</title>
<updated>2024-10-26T20:30:14Z</updated>
<author>
<name>babenko</name>
<email>babenko@yandex-team.com</email>
</author>
<published>2024-10-26T20:13:30Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=41d598c624442bf6918407466dac3316b8277347'/>
<id>urn:sha1:41d598c624442bf6918407466dac3316b8277347</id>
<content type='text'>
commit_hash:14c7e42422af750383f04855b4a7ea6b267b92d2
</content>
</entry>
<entry>
<title>YT: Support plain enum deserialization</title>
<updated>2024-10-10T08:34:56Z</updated>
<author>
<name>dgolear</name>
<email>dgolear@yandex-team.com</email>
</author>
<published>2024-10-10T08:05:17Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=9e123c4656b0ef4973531b837f30e9e542207590'/>
<id>urn:sha1:9e123c4656b0ef4973531b837f30e9e542207590</id>
<content type='text'>
(HIDDEN_URL
commit_hash:d9358ac48da1ab4a4ef9ccdbf7eb77a100cf3897
</content>
</entry>
</feed>
