<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ydb/library, branch CLI_2.10.0</title>
<subtitle>Mirror of YDB github repos</subtitle>
<id>https://code.mastervirt.ru/ydb/atom?h=CLI_2.10.0</id>
<link rel='self' href='https://code.mastervirt.ru/ydb/atom?h=CLI_2.10.0'/>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/'/>
<updated>2024-06-10T09:06:57Z</updated>
<entry>
<title>Merge branch 'rightlib' into mergelibs-240610-0905</title>
<updated>2024-06-10T09:06:57Z</updated>
<author>
<name>Alexander Smirnov</name>
<email>alex@ydb.tech</email>
</author>
<published>2024-06-10T09:06:57Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=34cfc5630de590de873f421573d2ae1ca2c6a19d'/>
<id>urn:sha1:34cfc5630de590de873f421573d2ae1ca2c6a19d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Do not use minilzo and quicklz in open source. Export it to github.</title>
<updated>2024-06-10T08:40:16Z</updated>
<author>
<name>iddqd</name>
<email>iddqd@yandex-team.com</email>
</author>
<published>2024-06-10T07:07:19Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=0f8b43a2792f618dce8711696ce5e394e7f3933d'/>
<id>urn:sha1:0f8b43a2792f618dce8711696ce5e394e7f3933d</id>
<content type='text'>
d4d08d59dfff0c48a950a3faa36be4ac7e060912
</content>
</entry>
<entry>
<title>Add TCaseInsensitiveAsciiString</title>
<updated>2024-06-09T11:38:13Z</updated>
<author>
<name>vadim-xd</name>
<email>vadim-xd@yandex-team.com</email>
</author>
<published>2024-06-09T11:29:51Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=22d59c45d8f17195622bd9e5bfa9259c50b1a732'/>
<id>urn:sha1:22d59c45d8f17195622bd9e5bfa9259c50b1a732</id>
<content type='text'>
Followup for rXXXXXX - further optimize ascii-only case insensitive strings
1fca7889a074a191eadce12247bdd6dd18b75ab2
</content>
</entry>
<entry>
<title>Revert commit rXXXXXX, temporary add library/cpp/streams/factory/open_by_signature to export</title>
<updated>2024-06-07T10:41:05Z</updated>
<author>
<name>iddqd</name>
<email>iddqd@yandex-team.com</email>
</author>
<published>2024-06-07T10:22:53Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=89aed776bc90bfaf56bab8fb2d4cd1a47a6c8c86'/>
<id>urn:sha1:89aed776bc90bfaf56bab8fb2d4cd1a47a6c8c86</id>
<content type='text'>
6c14e61e6b845e2aa92a25daf61de10267e9e8a0
</content>
</entry>
<entry>
<title>YT-21868: Refactor NYT::Format</title>
<updated>2024-06-07T10:27:39Z</updated>
<author>
<name>arkady-e1ppa</name>
<email>arkady-e1ppa@yandex-team.com</email>
</author>
<published>2024-06-07T10:13:50Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=327232940ecda2082cbcd9551049456522bbaffe'/>
<id>urn:sha1:327232940ecda2082cbcd9551049456522bbaffe</id>
<content type='text'>
NYT::Format had several problems:
1. There are too many ways to enable printing of T. Not all are equally good. You could specialize TValueFormatter, you could write an overload of FormatValue, you could write an overload of ToString, you could write an overload of operator &lt;&lt; for special stream or you could specialize the Out function.
2. If you attempt to print T which cannot be printed, you get a linker error without a proper source location which is very frustrating to work with.
3. There is no static analysis of format string performed even when it is possible.
4. If you write FormatValue overload, you still have to write ToString overload if you want to use this function (and people tend to use it quite a bit, since it is defined for util types and enums.

This pr addresses these issues to some extent. Relevant changes:
1. The only way to support NYT::Format is to define the FormatValue overload. Otherwise, you get a compile-time error.
2. Format overloads have changed: Now you have two options for general use:
```
TString Format(TStaticFormat&lt;TArgs...&gt; fmt, TArgs&amp;&amp;... args);
TString Format(TRuntimeFormat fmt, TArgs&amp;&amp;... args);
```
Either overload checks if TArg has a FormatValue overload. TStaticFormat performs a compile-time check of flags and the argument count. It binds to any string literal and constexpr string/string_view (and TStringBuf). TRuntimeFormat has to be mentioned explicitly. Otherwise, you will get a compile-time error for using runtime variable as a format.

3(!!!). Types which name begins with NYT:: have a specialization of ToString function which uses FormatValue. Thus, if you write class in namespace NYT and define FormatValue, you get ToString automatically. If your type is not from namespace enclosing NYT, you can just call NYT::ToString for the same effect. This limitation was caused by the fact, that we cannot review all of the external projects code which might inherit from stl  classes or adopt some other questionable code practises which may completely break the dispatching mechanism of ToString due to the specialization (there were such cases). Proper documentation of this library will be added soon, so that this interaction is made known. This limitation might be lifted later
77beb68082e10aaf48be1842aad8aba63f26c1bd
</content>
</entry>
<entry>
<title>add GetOrNull method to threadsafe cache</title>
<updated>2024-06-06T13:32:57Z</updated>
<author>
<name>ivanmautin</name>
<email>ivanmautin@yandex-team.com</email>
</author>
<published>2024-06-06T13:16:48Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=7e1624f2fd672349e2f89baffeca12ef8272ec8d'/>
<id>urn:sha1:7e1624f2fd672349e2f89baffeca12ef8272ec8d</id>
<content type='text'>
2c3ce3e36d35b563fe21b581380310ac84007f57
</content>
</entry>
<entry>
<title>add TThreadSafeLRUCacheWithSizeProvider wrapper</title>
<updated>2024-06-06T07:07:42Z</updated>
<author>
<name>ivanmautin</name>
<email>ivanmautin@yandex-team.com</email>
</author>
<published>2024-06-06T06:57:03Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=3babd5b1391836f4f4fdb3add9064a59707f9f7d'/>
<id>urn:sha1:3babd5b1391836f4f4fdb3add9064a59707f9f7d</id>
<content type='text'>
На данный момент никак нельзя создать thread-safe кэш с произвольным SizeProvider, из-за того, что это не позволяет сделать шаблон `TThreadSafeCache`, при этом отредактировтаь его тоже не удастся, так как для этого нужно передать дополнительный параметр `typename TSizeProvider`, что сломает обратную совместимость, так как шаблон принимает далее переменное число аргументов (см. [TThreadSafeCache](https://a.yandex-team.ru/arcadia/library/cpp/cache/thread_safe_cache.h?rev=rXXXXXX#L15))
В связи с этим добавлен еще один хелпер, для создания LRUCache с TSizeProvider
293511a33b45f23d8afc9ff217a817481401932c
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2024-06-06T04:06:13Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2024-06-06T03:56:20Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=f44820822073337ca895dee0ce177e5cf40260df'/>
<id>urn:sha1:f44820822073337ca895dee0ce177e5cf40260df</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Intermediate changes</title>
<updated>2024-06-05T22:56:11Z</updated>
<author>
<name>robot-piglet</name>
<email>robot-piglet@yandex-team.com</email>
</author>
<published>2024-06-05T22:45:29Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=bcc6b8fc7f29a22c37b867854c71b2b6f85642dd'/>
<id>urn:sha1:bcc6b8fc7f29a22c37b867854c71b2b6f85642dd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>temporary add library/cpp/streams/factory/open_by_signature to export</title>
<updated>2024-06-05T10:27:30Z</updated>
<author>
<name>iddqd</name>
<email>iddqd@yandex-team.com</email>
</author>
<published>2024-06-05T10:17:15Z</published>
<link rel='alternate' type='text/html' href='https://code.mastervirt.ru/ydb/commit/?id=b942cd0f5ca4da903e5e203a90084fecc88076d0'/>
<id>urn:sha1:b942cd0f5ca4da903e5e203a90084fecc88076d0</id>
<content type='text'>
e7cda406ffefb716562a9a7ba46607dff026f1c1
</content>
</entry>
</feed>
