summaryrefslogtreecommitdiffstats
path: root/library/cpp/yt/misc
Commit message (Collapse)AuthorAgeFilesLines
* YT-21868: Refactor NYT::Formatarkady-e1ppa2024-06-071-0/+2
| | | | | | | | | | | | | | | | | | | | 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 << 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<TArgs...> fmt, TArgs&&... args); TString Format(TRuntimeFormat fmt, TArgs&&... 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
* YT: Add FormatValue for std::source_locationdgolear2024-05-212-0/+44
| | | | | YTORM-1057 0aa4ceb80d984a15c92a69f242ecf517b3c7a07c
* Introduce YT_DEFINE_GLOBAL to help avoiding initialization order fiasco; ↵babenko2024-05-141-0/+13
| | | | | | apply to global loggers in yt/yt/core 787f98549edf6e8d46ac63cdb8db0609ccde42da
* YT-21310: Introduce CYsonStructSource to remove code duplication in ↵arkady-e1ppa2024-05-081-0/+16
| | | | | | TYsonStruct implementation (now with a fixed bug) 94a777c1510546c0a8a7ef3e3b327add7dfc3813
* Revert YT-21310: Introduce CYsonStructSource to remove code duplication in ↵arkady-e1ppa2024-05-081-16/+0
| | | | | | | | | TYsonStruct implementation Revert "YT-21310: Introduce CYsonStructSource to remove code duplication in TYsonStruct implementation" This reverts commit b5dbf4de1df8156e23176662e15b167361fddb19, reversing changes made to 5ab2a4add3801f5d310e76bf9ba496342d2b765a. 1f84c055d6e4df384230688c946a45dd6351a386
* Bunch of issues from babenko-issues tagarkady-e1ppa2024-05-071-2/+2
| | | | 4a6fd6fb52fcb4d43f76651d645dc2e1affe3dd0
* YT-21310: Introduce CYsonStructSource to remove code duplication in ↵arkady-e1ppa2024-05-071-0/+16
| | | | | | | TYsonStruct implementation done b5dbf4de1df8156e23176662e15b167361fddb19
* YT-21566: Access thread local variables via noinline functionslukyan2024-04-263-40/+17
| | | | 970c33b44a7bd166b2716d86d3d2053dcaf05d7d
* Move NO_UNIQUE_ADDRESS macro to library/cpp/yt/misc/port.harkady-e1ppa2024-04-231-0/+6
| | | | 8b95cb159efca3d611ef0361a6f53a20b2fb5b37
* Move concepts to library/cpp/yt/misc/concepts.harkady-e1ppa2024-04-211-0/+49
| | | | | Done b2c0a25fcacbb46fcf6294ce86b1a27ad2adac50
* Move FunctionView to library/cpp/yt/memory and add unit testsarkady-e1ppa2024-04-152-210/+0
| | | | 0f22987a2824410add2233f4434e26c9e1903da1
* YT-19731: Whitelist now prevents dropping inner errors with whitelisted ↵arkady-e1ppa2024-04-111-0/+40
| | | | | | | attributes No tests for now 9e6aa6815b8d892d1e76281e95f5d044196801e1
* YT-21402: Fibers Refactoring pt.1: Introduce FunctionView to use it as ↵arkady-e1ppa2024-04-052-0/+210
| | | | | | | | | | | | | | | | | | | AfterSwitch and improved registry algorithm 1) Added FunctionView -- non-owning type-erasure container. If we know that lambda lifetime is long enough, we can save up allocation by using this instead of TCallback. 2) Used FunctionView as AfterSwitch inside FiberSchedulerThread. We saved up a bunch of allocations (e.g. net worst-case allocations per suspend changed from 4 (x2 after switch + fiber allocation + enqueue to idle pool lf stack) to 2 (fiber allocation + enqueue to idle pool lf stack). 3) Fiber is not longer RefCounted. Its lifetime is managed via contract with TFiberRegistry. 4) TFiberRegistry is now lock-free for fiber insertion and deletion. For introspector it is still blocking. 5) "Introduced" SimpleIntrusiveList and IntrusiveMPSCStack to work be used in aforementioned TFiberRegistry. 6) elsedef branch of YT_REUSE_FIBERS was broken for about 3 years cause of double SetAfterSwitch. Now fixed. 7) (3), (4) and (5) caused some changes in yt_fiber_printers because some stuff was hardcoded there. Compat is in place. d6cf2ae5801c87813a21ca3e7243e1b2baa09f35
* YT-21233: Remove TSimpleException and teach TCompositeException storing ↵arkady-e1ppa2024-03-282-2/+2
| | | | | | | simple attributes Expand the CompositeException 9a10ec65bfc1df854e03bb3a4d8d0a0c0e4a3a5d
* Increase preprocessor recursion depth limitapachee2024-03-251-7/+604
| | | | | Increase preprocessor recursion depth limit because after commit YT-21331 to release branch number of enum fields exceeds 199 3536c4e6a39e1d48a4225f4845f43b16025ec73c
* YTORM-275: Fix TInstant deserialization from microsecond valuesdgolear2024-03-121-4/+10
| | | | 47845f7aede6898d43680bd7c6f1d48c05607e34
* Intermediate changesrobot-piglet2024-03-081-0/+72
|
* Intermediate changesrobot-piglet2024-02-021-2/+63
|
* [library/cpp/yt] fix peerdirtldr2024-01-301-0/+1
|
* Move enum_indexed_array from misc to containersbabenko2024-01-294-183/+0
|
* Drop TEnumIndexedVectorbabenko2024-01-272-107/+0
|
* Introduce TEnumIndexedArray as a refurbished version of TEnumIndexedVectorbabenko2024-01-255-0/+184
|
* feat contrib: aiogram 3armenqa2024-01-196-138/+0
| | | | Relates: https://st.yandex-team.ru/, https://st.yandex-team.ru/
* Library import 8 (#1074)AlexSm2024-01-182-4/+51
| | | | | * Library import 8 * Add contrib/libs/cxxsupp/libcxx/include/__verbose_abort
* Library import 7 (#937)AlexSm2024-01-113-0/+73
|
* Import libs 1 (#590)AlexSm2023-12-211-1/+1
| | | | | | | * Import libs 1 * Add new file without extension * Add file missed in export config
* Better relational operators for TStrongTypedefbabenko2023-12-132-30/+31
|
* YT-20547: TIncarnationId is strongly typedarkady-e1ppa2023-12-062-1/+41
| | | | First commit
* Use volatile TLS in library/cpp/ytlukyan2023-12-051-1/+5
|
* Require EMasterReign to be monotonickvk19202023-12-052-4/+6
|
* YT-20547: OperationId is strongly typedarkady-e1ppa2023-12-054-5/+221
|
* External build system generator release 65robot-ya-builder2023-12-051-3/+3
| | | | Update tools: yexport, os-yexport
* More TGuid helpersbabenko2023-11-254-26/+82
|
* YT-20547: TJobId is now strongly typedarkady-e1ppa2023-11-244-15/+43
|
* Address issues of rXXXXXXarkady-e1ppa2023-11-212-7/+7
| | | | Some new overloads to better support allocationId as strongly typed entity
* YT-19593: Constexpr friendliness in strong typedef plus TAllocationId uses ↵arkady-e1ppa2023-11-202-6/+45
| | | | it now
* add darwin-arm64 CMakeListsdcherednik2023-11-202-0/+26
|
* Make thread local variables fiber friendlylukyan2023-11-072-0/+40
|
* YTORM-214: Add unittests for pr-4688904kmokrov2023-10-272-0/+33
|
* YTORM-214: Add parsing enum from yson integerkmokrov2023-10-171-5/+21
|
* Get rid of TClusterResourceLimits::operator+()kvk19202023-09-221-12/+12
|
* YT-18571: Replace NYT::ToUnderlying with ::ToUnderlying from util/generic/cast.hbabenko2023-08-192-12/+2
|
* YT-19686: Add stubs for YT_USE_VANILLA_PROTOBUFgritukan2023-08-131-0/+3
|
* YT-19210: expose YQL shared library for YT.max422023-07-293-0/+375
| | | | After this, a new target libyqlplugin.so appears. in open-source cmake build. Diff in open-source YDB repo looks like the following: https://paste.yandex-team.ru/f302bdb4-7ef2-4362-91c7-6ca45f329264
* Revert "YT-19324: move YT provider to ydb/library/yql"max422023-06-303-373/+0
| | | | This reverts commit ca272f12fdd0e8d5c3e957fc87939148f1caaf72, reversing changes made to 49f8acfc8b0b5c0071b804423bcf53fda26c7c12.
* YT-19324: move YT provider to ydb/library/yqlmax422023-06-303-0/+373
| | | | | | | | | | | | | | This commit is formed by the following script: https://paste.yandex-team.ru/6f92e4b8-efc5-4d34-948b-15ee2accd7e7/text. This commit has zero effect on all projects that depend on YQL. The summary of changes: - `yql/providers/yt -> ydb/library/yql/providers/yt `- the whole implementation of YT provider is moved into YDB code base for further export as a part of YT YQL plugin shared library; - `yql/providers/stat/{expr_nodes,uploader} -> ydb/library/yql/providers/stat/{expr_nodes,uploader}` - a small interface without implementation and the description of stat expr nodes; - `yql/core/extract_predicate/ut -> ydb/library/yql/core/extract_predicate/ut`; - `yql/core/{ut,ut_common} -> ydb/library/yql/core/{ut,ut_common}`; - `yql/core` is gone; - `yql/library/url_preprocessing -> ydb/library/yql/core/url_preprocessing`. **NB**: all new targets inside `ydb/` are under `IF (NOT CMAKE_EXPORT)` clause which disables them from open-source cmake generation and ya make build. They will be enabled in the subsequent commits.
* Strongly typed cell tagkvk19202023-06-281-1/+0
|
* add ymake export to ydbalexv-smirnov2023-06-132-0/+44
|
* YT-19300: Various helpers for TStrongTypedefkvk19202023-06-082-1/+57
|
* YT-17341: Use TThreadName instead of TString to store thread name in error.yuryalekseev2023-06-052-4/+15
|