catboost 1.25.1 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/DEPLOYMENT.md +22 -15
  2. package/README.md +43 -27
  3. package/binding.gyp +5 -7
  4. package/build_scripts/bootstrap.js +2 -1
  5. package/build_scripts/out/build.js +46 -68
  6. package/build_scripts/out/build_model.js +1 -1
  7. package/build_scripts/out/{build_ya.js → build_native.js} +1 -1
  8. package/build_scripts/out/ci.js +5 -5
  9. package/build_scripts/out/common.js +1 -1
  10. package/build_scripts/out/config.js +32 -18
  11. package/build_scripts/out/install.js +5 -3
  12. package/build_scripts/out/package_prepublish.js +1 -1
  13. package/build_scripts/out/packaging.js +1 -19
  14. package/build_scripts/out/run_tests.js +1 -1
  15. package/build_scripts/out/test.js +8 -3
  16. package/config.json +18 -11
  17. package/inc/catboost/libs/model_interface/c_api.h +367 -5
  18. package/lib/catboost.d.ts +65 -21
  19. package/package.json +4 -4
  20. package/src/api_helpers.cpp +100 -24
  21. package/src/api_helpers.h +8 -7
  22. package/src/api_module.cpp +1 -2
  23. package/src/model.cpp +483 -83
  24. package/src/model.h +24 -9
  25. package/inc/contrib/libs/cxxsupp/system_stl/include/stlfwd +0 -14
  26. package/inc/util/charset/recode_result.h +0 -9
  27. package/inc/util/charset/unicode_table.h +0 -123
  28. package/inc/util/charset/unidata.h +0 -421
  29. package/inc/util/charset/utf8.h +0 -384
  30. package/inc/util/charset/wide.h +0 -843
  31. package/inc/util/charset/wide_specific.h +0 -22
  32. package/inc/util/datetime/base.h +0 -669
  33. package/inc/util/datetime/constants.h +0 -7
  34. package/inc/util/datetime/cputimer.h +0 -124
  35. package/inc/util/datetime/parser.h +0 -292
  36. package/inc/util/datetime/systime.h +0 -47
  37. package/inc/util/datetime/uptime.h +0 -8
  38. package/inc/util/digest/city.h +0 -88
  39. package/inc/util/digest/fnv.h +0 -73
  40. package/inc/util/digest/multi.h +0 -14
  41. package/inc/util/digest/murmur.h +0 -57
  42. package/inc/util/digest/numeric.h +0 -86
  43. package/inc/util/digest/sequence.h +0 -48
  44. package/inc/util/draft/date.h +0 -129
  45. package/inc/util/draft/datetime.h +0 -184
  46. package/inc/util/draft/enum.h +0 -136
  47. package/inc/util/draft/holder_vector.h +0 -102
  48. package/inc/util/draft/ip.h +0 -131
  49. package/inc/util/draft/matrix.h +0 -108
  50. package/inc/util/draft/memory.h +0 -40
  51. package/inc/util/folder/dirent_win.h +0 -46
  52. package/inc/util/folder/dirut.h +0 -121
  53. package/inc/util/folder/filelist.h +0 -81
  54. package/inc/util/folder/fts.h +0 -108
  55. package/inc/util/folder/iterator.h +0 -109
  56. package/inc/util/folder/lstat_win.h +0 -20
  57. package/inc/util/folder/path.h +0 -225
  58. package/inc/util/folder/pathsplit.h +0 -113
  59. package/inc/util/folder/tempdir.h +0 -42
  60. package/inc/util/generic/adaptor.h +0 -134
  61. package/inc/util/generic/algorithm.h +0 -765
  62. package/inc/util/generic/array_ref.h +0 -282
  63. package/inc/util/generic/array_size.h +0 -24
  64. package/inc/util/generic/benchmark/vector_count_ctor/f.h +0 -9
  65. package/inc/util/generic/bitmap.h +0 -1115
  66. package/inc/util/generic/bitops.h +0 -459
  67. package/inc/util/generic/bt_exception.h +0 -24
  68. package/inc/util/generic/buffer.h +0 -232
  69. package/inc/util/generic/cast.h +0 -176
  70. package/inc/util/generic/deque.h +0 -24
  71. package/inc/util/generic/explicit_type.h +0 -42
  72. package/inc/util/generic/fastqueue.h +0 -55
  73. package/inc/util/generic/flags.h +0 -244
  74. package/inc/util/generic/function.h +0 -103
  75. package/inc/util/generic/fwd.h +0 -171
  76. package/inc/util/generic/guid.h +0 -61
  77. package/inc/util/generic/hash.h +0 -2032
  78. package/inc/util/generic/hash_primes.h +0 -140
  79. package/inc/util/generic/hash_set.h +0 -490
  80. package/inc/util/generic/hide_ptr.h +0 -3
  81. package/inc/util/generic/intrlist.h +0 -876
  82. package/inc/util/generic/is_in.h +0 -53
  83. package/inc/util/generic/iterator.h +0 -137
  84. package/inc/util/generic/iterator_range.h +0 -105
  85. package/inc/util/generic/lazy_value.h +0 -66
  86. package/inc/util/generic/list.h +0 -22
  87. package/inc/util/generic/map.h +0 -44
  88. package/inc/util/generic/mapfindptr.h +0 -60
  89. package/inc/util/generic/maybe.h +0 -713
  90. package/inc/util/generic/maybe_traits.h +0 -164
  91. package/inc/util/generic/mem_copy.h +0 -55
  92. package/inc/util/generic/noncopyable.h +0 -38
  93. package/inc/util/generic/object_counter.h +0 -53
  94. package/inc/util/generic/ptr.h +0 -1113
  95. package/inc/util/generic/queue.h +0 -57
  96. package/inc/util/generic/refcount.h +0 -162
  97. package/inc/util/generic/reserve.h +0 -11
  98. package/inc/util/generic/scope.h +0 -65
  99. package/inc/util/generic/serialized_enum.h +0 -406
  100. package/inc/util/generic/set.h +0 -42
  101. package/inc/util/generic/singleton.h +0 -136
  102. package/inc/util/generic/size_literals.h +0 -65
  103. package/inc/util/generic/stack.h +0 -18
  104. package/inc/util/generic/store_policy.h +0 -120
  105. package/inc/util/generic/strbase.h +0 -612
  106. package/inc/util/generic/strbuf.h +0 -552
  107. package/inc/util/generic/strfcpy.h +0 -17
  108. package/inc/util/generic/string.h +0 -1572
  109. package/inc/util/generic/string_hash.h +0 -21
  110. package/inc/util/generic/string_ut.h +0 -1175
  111. package/inc/util/generic/type_name.h +0 -34
  112. package/inc/util/generic/typelist.h +0 -114
  113. package/inc/util/generic/typetraits.h +0 -325
  114. package/inc/util/generic/utility.h +0 -132
  115. package/inc/util/generic/va_args.h +0 -400
  116. package/inc/util/generic/variant.h +0 -631
  117. package/inc/util/generic/variant_traits.h +0 -171
  118. package/inc/util/generic/vector.h +0 -119
  119. package/inc/util/generic/xrange.h +0 -258
  120. package/inc/util/generic/yexception.h +0 -212
  121. package/inc/util/generic/yexception_ut.h +0 -14
  122. package/inc/util/generic/ylimits.h +0 -92
  123. package/inc/util/generic/ymath.h +0 -206
  124. package/inc/util/memory/addstorage.h +0 -93
  125. package/inc/util/memory/alloc.h +0 -27
  126. package/inc/util/memory/blob.h +0 -296
  127. package/inc/util/memory/mmapalloc.h +0 -8
  128. package/inc/util/memory/pool.h +0 -432
  129. package/inc/util/memory/segmented_string_pool.h +0 -194
  130. package/inc/util/memory/segpool_alloc.h +0 -118
  131. package/inc/util/memory/smallobj.h +0 -141
  132. package/inc/util/memory/tempbuf.h +0 -111
  133. package/inc/util/network/address.h +0 -136
  134. package/inc/util/network/endpoint.h +0 -61
  135. package/inc/util/network/hostip.h +0 -16
  136. package/inc/util/network/init.h +0 -60
  137. package/inc/util/network/interface.h +0 -17
  138. package/inc/util/network/iovec.h +0 -65
  139. package/inc/util/network/ip.h +0 -116
  140. package/inc/util/network/nonblock.h +0 -8
  141. package/inc/util/network/pair.h +0 -9
  142. package/inc/util/network/poller.h +0 -58
  143. package/inc/util/network/pollerimpl.h +0 -707
  144. package/inc/util/network/sock.h +0 -608
  145. package/inc/util/network/socket.h +0 -421
  146. package/inc/util/random/common_ops.h +0 -130
  147. package/inc/util/random/easy.h +0 -47
  148. package/inc/util/random/entropy.h +0 -21
  149. package/inc/util/random/fast.h +0 -101
  150. package/inc/util/random/init_atfork.h +0 -3
  151. package/inc/util/random/lcg_engine.h +0 -66
  152. package/inc/util/random/mersenne.h +0 -46
  153. package/inc/util/random/mersenne32.h +0 -50
  154. package/inc/util/random/mersenne64.h +0 -50
  155. package/inc/util/random/normal.h +0 -38
  156. package/inc/util/random/random.h +0 -30
  157. package/inc/util/random/shuffle.h +0 -39
  158. package/inc/util/str_stl.h +0 -266
  159. package/inc/util/stream/aligned.h +0 -99
  160. package/inc/util/stream/buffer.h +0 -119
  161. package/inc/util/stream/buffered.h +0 -225
  162. package/inc/util/stream/debug.h +0 -53
  163. package/inc/util/stream/direct_io.h +0 -43
  164. package/inc/util/stream/file.h +0 -108
  165. package/inc/util/stream/format.h +0 -444
  166. package/inc/util/stream/fwd.h +0 -100
  167. package/inc/util/stream/hex.h +0 -8
  168. package/inc/util/stream/holder.h +0 -44
  169. package/inc/util/stream/input.h +0 -273
  170. package/inc/util/stream/labeled.h +0 -19
  171. package/inc/util/stream/length.h +0 -100
  172. package/inc/util/stream/mem.h +0 -255
  173. package/inc/util/stream/multi.h +0 -32
  174. package/inc/util/stream/null.h +0 -61
  175. package/inc/util/stream/output.h +0 -304
  176. package/inc/util/stream/pipe.h +0 -112
  177. package/inc/util/stream/printf.h +0 -25
  178. package/inc/util/stream/str.h +0 -207
  179. package/inc/util/stream/tee.h +0 -28
  180. package/inc/util/stream/tempbuf.h +0 -21
  181. package/inc/util/stream/tokenizer.h +0 -214
  182. package/inc/util/stream/trace.h +0 -60
  183. package/inc/util/stream/walk.h +0 -35
  184. package/inc/util/stream/zerocopy.h +0 -91
  185. package/inc/util/stream/zerocopy_output.h +0 -57
  186. package/inc/util/stream/zlib.h +0 -173
  187. package/inc/util/string/ascii.h +0 -236
  188. package/inc/util/string/builder.h +0 -39
  189. package/inc/util/string/cast.h +0 -347
  190. package/inc/util/string/cstriter.h +0 -14
  191. package/inc/util/string/escape.h +0 -70
  192. package/inc/util/string/hex.h +0 -59
  193. package/inc/util/string/join.h +0 -194
  194. package/inc/util/string/printf.h +0 -13
  195. package/inc/util/string/reverse.h +0 -16
  196. package/inc/util/string/split.h +0 -1080
  197. package/inc/util/string/strip.h +0 -257
  198. package/inc/util/string/strspn.h +0 -65
  199. package/inc/util/string/subst.h +0 -56
  200. package/inc/util/string/type.h +0 -50
  201. package/inc/util/string/util.h +0 -195
  202. package/inc/util/string/vector.h +0 -132
  203. package/inc/util/system/align.h +0 -50
  204. package/inc/util/system/atexit.h +0 -22
  205. package/inc/util/system/atomic.h +0 -51
  206. package/inc/util/system/atomic_gcc.h +0 -90
  207. package/inc/util/system/atomic_ops.h +0 -189
  208. package/inc/util/system/atomic_win.h +0 -114
  209. package/inc/util/system/backtrace.h +0 -39
  210. package/inc/util/system/byteorder.h +0 -186
  211. package/inc/util/system/compat.h +0 -84
  212. package/inc/util/system/compiler.h +0 -620
  213. package/inc/util/system/condvar.h +0 -71
  214. package/inc/util/system/context.h +0 -181
  215. package/inc/util/system/context_aarch64.h +0 -8
  216. package/inc/util/system/context_i686.h +0 -9
  217. package/inc/util/system/context_x86.h +0 -12
  218. package/inc/util/system/context_x86_64.h +0 -7
  219. package/inc/util/system/cpu_id.h +0 -159
  220. package/inc/util/system/daemon.h +0 -28
  221. package/inc/util/system/datetime.h +0 -98
  222. package/inc/util/system/defaults.h +0 -149
  223. package/inc/util/system/demangle.h +0 -5
  224. package/inc/util/system/demangle_impl.h +0 -23
  225. package/inc/util/system/direct_io.h +0 -71
  226. package/inc/util/system/dynlib.h +0 -119
  227. package/inc/util/system/env.h +0 -32
  228. package/inc/util/system/error.h +0 -95
  229. package/inc/util/system/event.h +0 -122
  230. package/inc/util/system/execpath.h +0 -17
  231. package/inc/util/system/fasttime.h +0 -6
  232. package/inc/util/system/fhandle.h +0 -27
  233. package/inc/util/system/file.h +0 -210
  234. package/inc/util/system/file_lock.h +0 -34
  235. package/inc/util/system/filemap.h +0 -383
  236. package/inc/util/system/flock.h +0 -35
  237. package/inc/util/system/fs.h +0 -156
  238. package/inc/util/system/fs_win.h +0 -29
  239. package/inc/util/system/fstat.h +0 -46
  240. package/inc/util/system/getpid.h +0 -12
  241. package/inc/util/system/guard.h +0 -179
  242. package/inc/util/system/hi_lo.h +0 -139
  243. package/inc/util/system/hostname.h +0 -10
  244. package/inc/util/system/hp_timer.h +0 -36
  245. package/inc/util/system/info.h +0 -12
  246. package/inc/util/system/interrupt_signals.h +0 -22
  247. package/inc/util/system/madvise.h +0 -30
  248. package/inc/util/system/maxlen.h +0 -32
  249. package/inc/util/system/mem_info.h +0 -18
  250. package/inc/util/system/mincore.h +0 -38
  251. package/inc/util/system/mktemp.h +0 -11
  252. package/inc/util/system/mlock.h +0 -43
  253. package/inc/util/system/mutex.h +0 -67
  254. package/inc/util/system/nice.h +0 -3
  255. package/inc/util/system/pipe.h +0 -90
  256. package/inc/util/system/platform.h +0 -246
  257. package/inc/util/system/progname.h +0 -13
  258. package/inc/util/system/protect.h +0 -25
  259. package/inc/util/system/rusage.h +0 -26
  260. package/inc/util/system/rwlock.h +0 -78
  261. package/inc/util/system/sanitizers.h +0 -122
  262. package/inc/util/system/sem.h +0 -41
  263. package/inc/util/system/shellcommand.h +0 -472
  264. package/inc/util/system/shmat.h +0 -32
  265. package/inc/util/system/sigset.h +0 -78
  266. package/inc/util/system/spin_wait.h +0 -10
  267. package/inc/util/system/spinlock.h +0 -121
  268. package/inc/util/system/src_location.h +0 -25
  269. package/inc/util/system/src_root.h +0 -68
  270. package/inc/util/system/sys_alloc.h +0 -43
  271. package/inc/util/system/sysstat.h +0 -52
  272. package/inc/util/system/tempfile.h +0 -34
  273. package/inc/util/system/thread.h +0 -167
  274. package/inc/util/system/tls.h +0 -307
  275. package/inc/util/system/types.h +0 -119
  276. package/inc/util/system/unaligned_mem.h +0 -67
  277. package/inc/util/system/user.h +0 -5
  278. package/inc/util/system/utime.h +0 -6
  279. package/inc/util/system/valgrind.h +0 -48
  280. package/inc/util/system/winint.h +0 -43
  281. package/inc/util/system/yassert.h +0 -121
  282. package/inc/util/system/yield.h +0 -4
  283. package/inc/util/thread/factory.h +0 -65
  284. package/inc/util/thread/fwd.h +0 -30
  285. package/inc/util/thread/lfqueue.h +0 -406
  286. package/inc/util/thread/lfstack.h +0 -188
  287. package/inc/util/thread/pool.h +0 -388
  288. package/inc/util/thread/singleton.h +0 -42
  289. package/inc/util/ysafeptr.h +0 -427
  290. package/inc/util/ysaveload.h +0 -700
@@ -1,179 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/generic/noncopyable.h>
4
-
5
- template <class T>
6
- struct TCommonLockOps {
7
- static inline void Acquire(T* t) noexcept {
8
- t->Acquire();
9
- }
10
-
11
- static inline void Release(T* t) noexcept {
12
- t->Release();
13
- }
14
- };
15
-
16
- template <class T>
17
- struct TTryLockOps: public TCommonLockOps<T> {
18
- static inline bool TryAcquire(T* t) noexcept {
19
- return t->TryAcquire();
20
- }
21
- };
22
-
23
- //must be used with great care
24
- template <class TOps>
25
- struct TInverseLockOps: public TOps {
26
- template <class T>
27
- static inline void Acquire(T* t) noexcept {
28
- TOps::Release(t);
29
- }
30
-
31
- template <class T>
32
- static inline void Release(T* t) noexcept {
33
- TOps::Acquire(t);
34
- }
35
- };
36
-
37
- template <class T, class TOps = TCommonLockOps<T>>
38
- class TGuard: public TNonCopyable {
39
- public:
40
- inline TGuard(const T& t) noexcept {
41
- Init(&t);
42
- }
43
-
44
- inline TGuard(const T* t) noexcept {
45
- Init(t);
46
- }
47
-
48
- inline TGuard(TGuard&& g) noexcept
49
- : T_(g.T_)
50
- {
51
- g.T_ = nullptr;
52
- }
53
-
54
- inline ~TGuard() {
55
- Release();
56
- }
57
-
58
- inline void Release() noexcept {
59
- if (WasAcquired()) {
60
- TOps::Release(T_);
61
- T_ = nullptr;
62
- }
63
- }
64
-
65
- explicit inline operator bool() const noexcept {
66
- return WasAcquired();
67
- }
68
-
69
- inline bool WasAcquired() const noexcept {
70
- return T_ != nullptr;
71
- }
72
-
73
- inline T* GetMutex() const noexcept {
74
- return T_;
75
- }
76
-
77
- private:
78
- inline void Init(const T* t) noexcept {
79
- T_ = const_cast<T*>(t);
80
- TOps::Acquire(T_);
81
- }
82
-
83
- private:
84
- T* T_;
85
- };
86
-
87
- /*
88
- * {
89
- * auto guard = Guard(Lock_);
90
- * some code under guard
91
- * }
92
- */
93
- template <class T>
94
- static inline TGuard<T> Guard(const T& t) {
95
- return {&t};
96
- }
97
-
98
- /*
99
- * with_lock (Lock_) {
100
- * some code under guard
101
- * }
102
- */
103
- #define with_lock(X) \
104
- if (auto Y_GENERATE_UNIQUE_ID(__guard) = ::Guard(X)) { \
105
- goto Y_CAT(GUARD_LABEL, __LINE__); \
106
- } else \
107
- Y_CAT(GUARD_LABEL, __LINE__) \
108
- :
109
-
110
- /*
111
- * auto guard = Guard(Lock_);
112
- * ... some code under lock
113
- * {
114
- * auto unguard = Unguard(guard);
115
- * ... some code not under lock
116
- * }
117
- * ... some code under lock
118
- */
119
- template <class T, class TOps = TCommonLockOps<T>>
120
- using TInverseGuard = TGuard<T, TInverseLockOps<TOps>>;
121
-
122
- template <class T, class TOps>
123
- static inline TInverseGuard<T, TOps> Unguard(const TGuard<T, TOps>& guard) {
124
- return {guard.GetMutex()};
125
- }
126
-
127
- template <class T>
128
- static inline TInverseGuard<T> Unguard(const T& mutex) {
129
- return {&mutex};
130
- }
131
-
132
- template <class T, class TOps = TTryLockOps<T>>
133
- class TTryGuard: public TNonCopyable {
134
- public:
135
- inline TTryGuard(const T& t) noexcept {
136
- Init(&t);
137
- }
138
-
139
- inline TTryGuard(const T* t) noexcept {
140
- Init(t);
141
- }
142
-
143
- inline TTryGuard(TTryGuard&& g) noexcept
144
- : T_(g.T_)
145
- {
146
- g.T_ = nullptr;
147
- }
148
-
149
- inline ~TTryGuard() {
150
- Release();
151
- }
152
-
153
- inline void Release() noexcept {
154
- if (WasAcquired()) {
155
- TOps::Release(T_);
156
- T_ = nullptr;
157
- }
158
- }
159
-
160
- inline bool WasAcquired() const noexcept {
161
- return T_ != nullptr;
162
- }
163
-
164
- explicit inline operator bool() const noexcept {
165
- return WasAcquired();
166
- }
167
-
168
- private:
169
- inline void Init(const T* t) noexcept {
170
- T_ = nullptr;
171
- T* tMutable = const_cast<T*>(t);
172
- if (TOps::TryAcquire(tMutable)) {
173
- T_ = tMutable;
174
- }
175
- }
176
-
177
- private:
178
- T* T_;
179
- };
@@ -1,139 +0,0 @@
1
- #pragma once
2
-
3
- #include "unaligned_mem.h"
4
-
5
- #ifndef _little_endian_
6
- #error "Not implemented"
7
- #endif
8
-
9
- namespace NHiLoPrivate {
10
- template <class TRepr>
11
- class TConstIntRef {
12
- public:
13
- explicit TConstIntRef(const char* ptr)
14
- : Ptr(ptr)
15
- {
16
- }
17
-
18
- TRepr Get() const { return ReadUnaligned<TRepr>(Ptr); }
19
- operator TRepr() const { return Get(); }
20
-
21
- const char* GetPtr() const { return Ptr; }
22
-
23
- protected:
24
- const char* Ptr;
25
- };
26
-
27
- template <class TRepr>
28
- class TIntRef : public TConstIntRef<TRepr> {
29
- public:
30
- explicit TIntRef(char* ptr)
31
- : TConstIntRef<TRepr>(ptr)
32
- {
33
- }
34
-
35
- TIntRef& operator=(TRepr value) {
36
- WriteUnaligned<TRepr>(GetPtr(), value);
37
- return *this;
38
- }
39
-
40
- char* GetPtr() const { return const_cast<char *>(this->Ptr); }
41
- };
42
-
43
- template <class T>
44
- struct TReferenceType {
45
- using TType = T;
46
- };
47
-
48
- template <class T>
49
- struct TReferenceType<TConstIntRef<T>> {
50
- using TType = T;
51
- };
52
-
53
- template <class T>
54
- struct TReferenceType<TIntRef<T>> {
55
- using TType = T;
56
- };
57
-
58
- template <class TRepr>
59
- auto MakeIntRef(const char* ptr) {
60
- return TConstIntRef<TRepr>(ptr);
61
- }
62
-
63
- template <class TRepr>
64
- auto MakeIntRef(char* ptr) {
65
- return TIntRef<TRepr>(ptr);
66
- }
67
-
68
- template <class T>
69
- const char* CharPtrOf(const T& value) {
70
- return reinterpret_cast<const char *>(&value);
71
- }
72
-
73
- template <class T>
74
- char* CharPtrOf(T& value) {
75
- return reinterpret_cast<char *>(&value);
76
- }
77
-
78
- template <class T>
79
- const char* CharPtrOf(TConstIntRef<T> value) {
80
- return value.GetPtr();
81
- }
82
-
83
- template <class T>
84
- char* CharPtrOf(TIntRef<T> value) {
85
- return value.GetPtr();
86
- }
87
-
88
- template <bool IsLow, class TRepr, class T>
89
- auto MakeIntRef(T&& value) {
90
- using TRef = typename TReferenceType<typename std::decay<T>::type>::TType;
91
- static_assert(
92
- std::is_scalar<TRef>::value,
93
- "Hi* and Lo* functions can be applied only to scalar values");
94
- static_assert(sizeof(TRef) >= sizeof(TRepr), "Requested bit range is not within provided value");
95
- constexpr size_t offset = IsLow ? 0 : sizeof(TRef) - sizeof(TRepr);
96
-
97
- return MakeIntRef<TRepr>(CharPtrOf(std::forward<T>(value)) + offset);
98
- }
99
- }
100
-
101
- /**
102
- * Return manipulator object that allows to get and set lower or higher bits of the value.
103
- *
104
- * @param value Must be a scalar value of sufficient size or a manipulator object obtained by
105
- * calling any of the other Hi/Lo functions.
106
- *
107
- * @{
108
- */
109
- template <class T>
110
- auto Lo32(T&& value) {
111
- return NHiLoPrivate::MakeIntRef<true, ui32>(std::forward<T>(value));
112
- }
113
-
114
- template <class T>
115
- auto Hi32(T&& value) {
116
- return NHiLoPrivate::MakeIntRef<false, ui32>(std::forward<T>(value));
117
- }
118
-
119
- template <class T>
120
- auto Lo16(T&& value) {
121
- return NHiLoPrivate::MakeIntRef<true, ui16>(std::forward<T>(value));
122
- }
123
-
124
- template <class T>
125
- auto Hi16(T&& value) {
126
- return NHiLoPrivate::MakeIntRef<false, ui16>(std::forward<T>(value));
127
- }
128
-
129
- template <class T>
130
- auto Lo8(T&& value) {
131
- return NHiLoPrivate::MakeIntRef<true, ui8>(std::forward<T>(value));
132
- }
133
-
134
- template <class T>
135
- auto Hi8(T&& value) {
136
- return NHiLoPrivate::MakeIntRef<false, ui8>(std::forward<T>(value));
137
- }
138
-
139
- /** @} */
@@ -1,10 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/generic/fwd.h>
4
-
5
- const char* GetHostName();
6
- const TString& HostName();
7
-
8
- const char* GetFQDNHostName();
9
- const TString& FQDNHostName();
10
- bool IsFQDN(const TString& name);
@@ -1,36 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
-
5
- namespace NHPTimer {
6
- using STime = i64;
7
- // May delay for ~50ms to compute frequency
8
- double GetSeconds(const STime& a) noexcept;
9
- // Returns the current time
10
- void GetTime(STime* pTime) noexcept;
11
- // Returns the time passed since *pTime, and writes the current time into *pTime.
12
- double GetTimePassed(STime* pTime) noexcept;
13
- // Get TSC frequency, may delay for ~50ms to compute frequency
14
- double GetClockRate() noexcept;
15
- // same as GetClockRate, but in integer
16
- ui64 GetCyclesPerSecond() noexcept;
17
- }
18
-
19
- struct THPTimer {
20
- THPTimer() noexcept {
21
- Reset();
22
- }
23
- void Reset() noexcept {
24
- NHPTimer::GetTime(&Start);
25
- }
26
- double Passed() const noexcept {
27
- NHPTimer::STime tmp = Start;
28
- return NHPTimer::GetTimePassed(&tmp);
29
- }
30
- double PassedReset() noexcept {
31
- return NHPTimer::GetTimePassed(&Start);
32
- }
33
-
34
- private:
35
- NHPTimer::STime Start;
36
- };
@@ -1,12 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
-
5
- namespace NSystemInfo {
6
- size_t NumberOfCpus();
7
- size_t CachedNumberOfCpus();
8
- size_t LoadAverage(double* la, size_t len);
9
- size_t GetPageSize() noexcept;
10
- size_t TotalMemorySize();
11
- size_t MaxOpenFiles();
12
- }
@@ -1,22 +0,0 @@
1
- #pragma once
2
-
3
- #include "platform.h"
4
-
5
- #include <csignal>
6
-
7
- #ifdef _win_
8
- #ifndef SIGHUP
9
- #define SIGHUP 1 /* Hangup (POSIX). */
10
- #endif
11
- #endif
12
-
13
- /**
14
- * Set handler for interrupt signals.
15
- *
16
- * All OSes: SIGINT, SIGTERM (defined by C++ standard)
17
- * UNIX variants: Also SIGHUP
18
- * Windows: CTRL_C_EVENT handled as SIGINT, CTRL_BREAK_EVENT as SIGTERM, CTRL_CLOSE_EVENT as SIGHUP
19
- *
20
- * \param handler Signal handler to use. Pass nullptr to clear currently set handler.
21
- */
22
- void SetInterruptSignalsHandler(void (*handler)(int signum));
@@ -1,30 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
-
5
- #include <util/generic/array_ref.h>
6
-
7
- /// see linux madvise(MADV_SEQUENTIAL)
8
- void MadviseSequentialAccess(const void* begin, size_t size);
9
- void MadviseSequentialAccess(TArrayRef<const char> data);
10
- void MadviseSequentialAccess(TArrayRef<const ui8> data);
11
-
12
- /// see linux madvise(MADV_RANDOM)
13
- void MadviseRandomAccess(const void* begin, size_t size);
14
- void MadviseRandomAccess(TArrayRef<const char> data);
15
- void MadviseRandomAccess(TArrayRef<const ui8> data);
16
-
17
- /// see linux madvise(MADV_DONTNEED)
18
- void MadviseEvict(const void* begin, size_t size);
19
- void MadviseEvict(TArrayRef<const char> data);
20
- void MadviseEvict(TArrayRef<const ui8> data);
21
-
22
- /// see linux madvise(MADV_DONTDUMP)
23
- void MadviseExcludeFromCoreDump(const void* begin, size_t size);
24
- void MadviseExcludeFromCoreDump(TArrayRef<const char> data);
25
- void MadviseExcludeFromCoreDump(TArrayRef<const ui8> data);
26
-
27
- /// see linux madvise(MADV_DODUMP)
28
- void MadviseIncludeIntoCoreDump(const void* begin, size_t size);
29
- void MadviseIncludeIntoCoreDump(TArrayRef<const char> data);
30
- void MadviseIncludeIntoCoreDump(TArrayRef<const ui8> data);
@@ -1,32 +0,0 @@
1
- #pragma once
2
-
3
- #include <cstdlib>
4
-
5
- // http://support.microsoft.com/kb/208427
6
- #ifndef URL_MAXLEN
7
- #define URL_MAXLEN 2083
8
- #endif
9
-
10
- #define HOST_MAX 260
11
- #ifndef URL_MAX
12
- #define URL_MAX 1024
13
- #endif
14
- #define FULLURL_MAX (URL_MAX + HOST_MAX)
15
-
16
- #define LINKTEXT_MAX 1024
17
-
18
- #ifdef WIN32
19
- #ifndef PATH_MAX
20
- #define PATH_MAX _MAX_PATH
21
- #endif
22
- #else
23
-
24
- #ifndef MAX_PATH
25
- #define MAX_PATH PATH_MAX
26
- #endif
27
-
28
- #ifndef _MAX_PATH
29
- #define _MAX_PATH PATH_MAX
30
- #endif
31
-
32
- #endif
@@ -1,18 +0,0 @@
1
- #pragma once
2
-
3
- #include "compat.h"
4
-
5
- namespace NMemInfo {
6
- struct TMemInfo {
7
- ui64 RSS; // current RAM size of the process
8
- ui64 VMS; // current VM size of the process
9
-
10
- TMemInfo()
11
- : RSS()
12
- , VMS()
13
- {
14
- }
15
- };
16
-
17
- TMemInfo GetMemInfo(pid_t = 0);
18
- }
@@ -1,38 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
- /**
5
- * Fills a vector that indicates whether pages of the calling process's virtual memory are resident in RAM. Each byte
6
- * in the vector contains the status of a single page. The page size can be obtained via the NSystemInfo::GetPageSize()
7
- * function. Use the IsPageInCore function to interpret the page status byte.
8
- *
9
- * Can be overly pessimistic:
10
- * - Assumes nothing is in RAM on platforms other than Linux
11
- * - Recent Linux kernels (4.21 and some backports) may return zeroes if the process doesn't have writing permissions
12
- * for the given file. See CVE-2019-5489.
13
- *
14
- * @param[in] addr starting address of the memory range to be examined
15
- * @param[in] len length (bytes) of the memory range to be examined
16
- * @param[out] vec vector of bytes to store statuses of memory pages
17
- * @param[in] vecLen length (bytes) of the vec, should be large enough to hold the requested pages count
18
- * @throws yexception if there was a system error or if the vecLen is too small
19
- *
20
- * @note this is only a snapshot, results may be stale by the time they're used
21
- * @see man 2 mincore
22
- */
23
- void InCoreMemory(const void* addr, size_t len, unsigned char* vec, size_t vecLen);
24
-
25
- /**
26
- * Takes as an argument an element of the vector previously filled by InCoreMemory.
27
- *
28
- * @param[in] byte corresponding to the status of a single page
29
- *
30
- * @returns true if this page was resident in memory at the time out the InCoreMemory execution
31
- */
32
- inline bool IsPageInCore(unsigned char s) {
33
- /* From mincore(2): On return, the least significant bit of each byte will be set if the corresponding page is
34
- * currently resident in memory, and be clear otherwise. (The settings of the other bits in each byte are
35
- * undefined; these bits are reserved for possible later use.)
36
- */
37
- return s & 1;
38
- }
@@ -1,11 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/generic/fwd.h>
4
-
5
- /*
6
- * Create temp file name in the specified directory. If there is no file with this name, it will be created.
7
- * Note, that the function is not race-free, the file is guaranteed to exist at the time the function returns, but not at the time the returned name is first used.
8
- * If wrkDir is NULL or empty, GetSystemTempDir is used.
9
- * throw exception on error
10
- */
11
- TString MakeTempName(const char* wrkDir = nullptr, const char* prefix = "yandex");
@@ -1,43 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
-
5
- #include <util/generic/flags.h>
6
-
7
- //on some systems (not win, freebd, linux, but darwin (Mac OS X)
8
- //multiple mlock calls on the same address range
9
- //require the corresponding number of munlock calls to actually unlock the pages
10
-
11
- //on some systems you must have privilege and resource limit
12
-
13
- void LockMemory(const void* addr, size_t len);
14
- void UnlockMemory(const void* addr, size_t len);
15
-
16
- enum ELockAllMemoryFlag {
17
- /** Lock all pages which are currently mapped into the address space of the process. */
18
- LockCurrentMemory = 1,
19
-
20
- /** Lock all pages which will become mapped into the address space of the process in the future. */
21
- LockFutureMemory = 2,
22
-
23
- /** Since Linux 4.4, with LockCurrentMemory or LockFutureMemory or both, lock only pages that are or once they are present in memory. */
24
- LockMemoryOnFault = 4,
25
- };
26
- Y_DECLARE_FLAGS(ELockAllMemoryFlags, ELockAllMemoryFlag)
27
- Y_DECLARE_OPERATORS_FOR_FLAGS(ELockAllMemoryFlags)
28
-
29
- /**
30
- * Performs provided locking operation.
31
- *
32
- * Does nothing on windows.
33
- *
34
- * \param flags Locking operation to perform.
35
- */
36
- void LockAllMemory(ELockAllMemoryFlags flags);
37
-
38
- /**
39
- * Unlocks whatever was locked with a previous call to `LockAllMemory`.
40
- *
41
- * Does nothing on windows.
42
- */
43
- void UnlockAllMemory();
@@ -1,67 +0,0 @@
1
- #pragma once
2
-
3
- #include "guard.h"
4
- #include "defaults.h"
5
-
6
- #include <util/generic/ptr.h>
7
- #include <util/generic/noncopyable.h>
8
-
9
- class TFakeMutex: public TNonCopyable {
10
- public:
11
- inline void Acquire() noexcept {
12
- }
13
-
14
- inline bool TryAcquire() noexcept {
15
- return true;
16
- }
17
-
18
- inline void Release() noexcept {
19
- }
20
-
21
- inline void lock() noexcept {
22
- Acquire();
23
- }
24
-
25
- inline bool try_lock() noexcept {
26
- return TryAcquire();
27
- }
28
-
29
- inline void unlock() noexcept {
30
- Release();
31
- }
32
-
33
- ~TFakeMutex() = default;
34
- };
35
-
36
- class TSysMutex {
37
- public:
38
- TSysMutex();
39
- TSysMutex(TSysMutex&&);
40
- ~TSysMutex();
41
-
42
- void Acquire() noexcept;
43
- bool TryAcquire() noexcept;
44
- void Release() noexcept;
45
-
46
- inline void lock() noexcept {
47
- Acquire();
48
- }
49
-
50
- inline bool try_lock() noexcept {
51
- return TryAcquire();
52
- }
53
-
54
- inline void unlock() noexcept {
55
- Release();
56
- }
57
-
58
- //return opaque pointer to real handler
59
- void* Handle() const noexcept;
60
-
61
- private:
62
- class TImpl;
63
- THolder<TImpl> Impl_;
64
- };
65
-
66
- class TMutex: public TSysMutex {
67
- };
@@ -1,3 +0,0 @@
1
- #pragma once
2
-
3
- bool Nice(int prioDelta);