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,90 +0,0 @@
1
- #pragma once
2
-
3
- #ifdef __GNUC__
4
- #pragma GCC diagnostic push
5
- #pragma GCC diagnostic ignored "-Warray-bounds" //need because of bug in gcc4.9.2
6
- #endif
7
-
8
- #include "defaults.h"
9
- #include "file.h"
10
- #include <util/generic/ptr.h>
11
- #include <util/network/pair.h>
12
- #include <util/generic/noncopyable.h>
13
-
14
- using PIPEHANDLE = SOCKET;
15
- #define INVALID_PIPEHANDLE INVALID_SOCKET
16
-
17
- /// Pipe-like object: pipe on POSIX and socket on windows
18
- class TPipeHandle: public TNonCopyable {
19
- public:
20
- inline TPipeHandle() noexcept
21
- : Fd_(INVALID_PIPEHANDLE)
22
- {
23
- }
24
-
25
- inline TPipeHandle(PIPEHANDLE fd) noexcept
26
- : Fd_(fd)
27
- {
28
- }
29
-
30
- inline ~TPipeHandle() {
31
- Close();
32
- }
33
-
34
- bool Close() noexcept;
35
-
36
- inline PIPEHANDLE Release() noexcept {
37
- PIPEHANDLE ret = Fd_;
38
- Fd_ = INVALID_PIPEHANDLE;
39
- return ret;
40
- }
41
-
42
- inline void Swap(TPipeHandle& r) noexcept {
43
- DoSwap(Fd_, r.Fd_);
44
- }
45
-
46
- inline operator PIPEHANDLE() const noexcept {
47
- return Fd_;
48
- }
49
-
50
- inline bool IsOpen() const noexcept {
51
- return Fd_ != INVALID_PIPEHANDLE;
52
- }
53
-
54
- ssize_t Read(void* buffer, size_t byteCount) const noexcept;
55
- ssize_t Write(const void* buffer, size_t byteCount) const noexcept;
56
-
57
- // Only CloseOnExec is supported
58
- static void Pipe(TPipeHandle& reader, TPipeHandle& writer, EOpenMode mode = 0);
59
-
60
- private:
61
- PIPEHANDLE Fd_;
62
- };
63
-
64
- class TPipe {
65
- public:
66
- TPipe();
67
- /// Takes ownership of handle, so closes it when the last holder of descriptor dies.
68
- explicit TPipe(PIPEHANDLE fd);
69
- ~TPipe();
70
-
71
- void Close();
72
-
73
- bool IsOpen() const noexcept;
74
- PIPEHANDLE GetHandle() const noexcept;
75
-
76
- size_t Read(void* buf, size_t len) const;
77
- size_t Write(const void* buf, size_t len) const;
78
-
79
- // Only CloseOnExec is supported
80
- static void Pipe(TPipe& reader, TPipe& writer, EOpenMode mode = 0);
81
-
82
- private:
83
- class TImpl;
84
- using TImplRef = TSimpleIntrusivePtr<TImpl>;
85
- TImplRef Impl_;
86
- };
87
-
88
- #ifdef __GNUC__
89
- #pragma GCC diagnostic pop
90
- #endif
@@ -1,246 +0,0 @@
1
- #pragma once
2
-
3
- // ya style breaks indentation in ifdef's and code becomes unreadable
4
- // clang-format off
5
-
6
- // What OS ?
7
- // our definition has the form _{osname}_
8
-
9
- #if defined(_WIN64)
10
- #define _win64_
11
- #define _win32_
12
- #elif defined(__WIN32__) || defined(_WIN32) // _WIN32 is also defined by the 64-bit compiler for backward compatibility
13
- #define _win32_
14
- #else
15
- #define _unix_
16
-
17
- #if defined(__sun__) || defined(sun) || defined(sparc) || defined(__sparc)
18
- #define _sun_
19
- #endif
20
-
21
- #if defined(__hpux__)
22
- #define _hpux_
23
- #endif
24
-
25
- #if defined(__linux__)
26
- // Stands for "Linux" in the means of Linux kernel (i. e. Android is included)
27
- #define _linux_
28
- #endif
29
-
30
- #if defined(__FreeBSD__)
31
- #define _freebsd_
32
- #endif
33
-
34
- #if defined(__CYGWIN__)
35
- #define _cygwin_
36
- #endif
37
-
38
- #if defined(__APPLE__)
39
- #define _darwin_
40
- #endif
41
-
42
- #if defined(__ANDROID__)
43
- #define _android_
44
- #endif
45
- #endif
46
-
47
- #if defined(__IOS__)
48
- #define _ios_
49
- #endif
50
-
51
- #if defined(_linux_)
52
- #if defined(_musl_)
53
- // nothing to do
54
- #elif defined(_android_)
55
- // Please do not mix with android-based systems.
56
- // This definition describes Standard Library (libc) type.
57
- #define _bionic_
58
- #else
59
- #define _glibc_
60
- #endif
61
- #endif
62
-
63
- #if defined(_darwin_)
64
- #define unix
65
- #define __unix__
66
- #endif
67
-
68
- #if defined(_win32_) || defined(_win64_)
69
- #define _win_
70
- #endif
71
-
72
- #if defined(__arm__) || defined(__ARM__) || defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM)
73
- #if defined(__arm64) || defined(__arm64__) || defined(__aarch64__)
74
- #define _arm64_
75
- #else
76
- #define _arm32_
77
- #endif
78
- #endif
79
-
80
- #if defined(_arm64_) || defined(_arm32_)
81
- #define _arm_
82
- #endif
83
-
84
- /* __ia64__ and __x86_64__ - defined by GNU C.
85
- * _M_IA64, _M_X64, _M_AMD64 - defined by Visual Studio.
86
- *
87
- * Microsoft can define _M_IX86, _M_AMD64 (before Visual Studio 8)
88
- * or _M_X64 (starting in Visual Studio 8).
89
- */
90
- #if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64)
91
- #define _x86_64_
92
- #endif
93
-
94
- #if defined(__i386__) || defined(_M_IX86)
95
- #define _i386_
96
- #endif
97
-
98
- #if defined(__ia64__) || defined(_M_IA64)
99
- #define _ia64_
100
- #endif
101
-
102
- #if defined(__powerpc__)
103
- #define _ppc_
104
- #endif
105
-
106
- #if defined(__powerpc64__)
107
- #define _ppc64_
108
- #endif
109
-
110
- #if !defined(sparc) && !defined(__sparc) && !defined(__hpux__) && !defined(__alpha__) && !defined(_ia64_) && !defined(_x86_64_) && !defined(_arm_) && !defined(_i386_) && !defined(_ppc_) && !defined(_ppc64_)
111
- #error "platform not defined, please, define one"
112
- #endif
113
-
114
- #if defined(_x86_64_) || defined(_i386_)
115
- #define _x86_
116
- #endif
117
-
118
- #if defined(__MIC__)
119
- #define _mic_
120
- #define _k1om_
121
- #endif
122
-
123
- // stdio or MessageBox
124
- #if defined(__CONSOLE__) || defined(_CONSOLE)
125
- #define _console_
126
- #endif
127
- #if (defined(_win_) && !defined(_console_))
128
- #define _windows_
129
- #elif !defined(_console_)
130
- #define _console_
131
- #endif
132
-
133
- #if defined(__SSE__) || defined(SSE_ENABLED)
134
- #define _sse_
135
- #endif
136
-
137
- #if defined(__SSE2__) || defined(SSE2_ENABLED)
138
- #define _sse2_
139
- #endif
140
-
141
- #if defined(__SSE3__) || defined(SSE3_ENABLED)
142
- #define _sse3_
143
- #endif
144
-
145
- #if defined(__SSSE3__) || defined(SSSE3_ENABLED)
146
- #define _ssse3_
147
- #endif
148
-
149
- #if defined(__SSE4_1__) || defined(SSE41_ENABLED)
150
- #define _sse4_1_
151
- #endif
152
-
153
- #if defined(__SSE4_2__) || defined(SSE42_ENABLED)
154
- #define _sse4_2_
155
- #endif
156
-
157
- #if defined(__POPCNT__) || defined(POPCNT_ENABLED)
158
- #define _popcnt_
159
- #endif
160
-
161
- #if defined(__PCLMUL__) || defined(PCLMUL_ENABLED)
162
- #define _pclmul_
163
- #endif
164
-
165
- #if defined(__AES__) || defined(AES_ENABLED)
166
- #define _aes_
167
- #endif
168
-
169
- #if defined(__AVX__) || defined(AVX_ENABLED)
170
- #define _avx_
171
- #endif
172
-
173
- #if defined(__AVX2__) || defined(AVX2_ENABLED)
174
- #define _avx2_
175
- #endif
176
-
177
- #if defined(__FMA__) || defined(FMA_ENABLED)
178
- #define _fma_
179
- #endif
180
-
181
- #if defined(__DLL__) || defined(_DLL)
182
- #define _dll_
183
- #endif
184
-
185
- // 16, 32 or 64
186
- #if defined(__sparc_v9__) || defined(_x86_64_) || defined(_ia64_) || defined(_arm64_) || defined(_ppc64_)
187
- #define _64_
188
- #else
189
- #define _32_
190
- #endif
191
-
192
- /* All modern 64-bit Unix systems use scheme LP64 (long, pointers are 64-bit).
193
- * Microsoft uses a different scheme: LLP64 (long long, pointers are 64-bit).
194
- *
195
- * Scheme LP64 LLP64
196
- * char 8 8
197
- * short 16 16
198
- * int 32 32
199
- * long 64 32
200
- * long long 64 64
201
- * pointer 64 64
202
- */
203
-
204
- #if defined(_32_)
205
- #define SIZEOF_PTR 4
206
- #elif defined(_64_)
207
- #define SIZEOF_PTR 8
208
- #endif
209
-
210
- #define PLATFORM_DATA_ALIGN SIZEOF_PTR
211
-
212
- #if !defined(SIZEOF_PTR)
213
- #error todo
214
- #endif
215
-
216
- #define SIZEOF_CHAR 1
217
- #define SIZEOF_UNSIGNED_CHAR 1
218
- #define SIZEOF_SHORT 2
219
- #define SIZEOF_UNSIGNED_SHORT 2
220
- #define SIZEOF_INT 4
221
- #define SIZEOF_UNSIGNED_INT 4
222
-
223
- #if defined(_32_)
224
- #define SIZEOF_LONG 4
225
- #define SIZEOF_UNSIGNED_LONG 4
226
- #elif defined(_64_)
227
- #if defined(_win_)
228
- #define SIZEOF_LONG 4
229
- #define SIZEOF_UNSIGNED_LONG 4
230
- #else
231
- #define SIZEOF_LONG 8
232
- #define SIZEOF_UNSIGNED_LONG 8
233
- #endif // _win_
234
- #endif // _32_
235
-
236
- #if !defined(SIZEOF_LONG)
237
- #error todo
238
- #endif
239
-
240
- #define SIZEOF_LONG_LONG 8
241
- #define SIZEOF_UNSIGNED_LONG_LONG 8
242
-
243
- #undef SIZEOF_SIZE_T // in case we include <Python.h> which defines it, too
244
- #define SIZEOF_SIZE_T SIZEOF_PTR
245
-
246
- // clang-format on
@@ -1,13 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/generic/fwd.h>
4
-
5
- void SetProgramName(const char* argv0);
6
-
7
- #define SAVE_PROGRAM_NAME \
8
- do { \
9
- SetProgramName(argv[0]); \
10
- } while (0)
11
-
12
- /// guaranted return the same immutable instance of TString
13
- const TString& GetProgramName();
@@ -1,25 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
-
5
- #include <util/generic/flags.h>
6
-
7
- enum EProtectMemoryMode {
8
- PM_NONE = 0x00, // no access allowed
9
- PM_READ = 0x01, // read access allowed
10
- PM_WRITE = 0x02, // write access allowed
11
- PM_EXEC = 0x04 // execute access allowed
12
- };
13
-
14
- Y_DECLARE_FLAGS(EProtectMemory, EProtectMemoryMode)
15
- Y_DECLARE_OPERATORS_FOR_FLAGS(EProtectMemory)
16
-
17
- /**
18
- * Set protection mode on memory block
19
- * @param addr Block address to be protected
20
- * @param length Block size in bytes
21
- * @param mode A bitwise combination of @c EProtectMemoryMode flags
22
- * @note On Windows there is no write-only protection mode,
23
- * so PM_WRITE will be translated to (PM_READ | PM_WRITE) on Windows.
24
- **/
25
- void ProtectMemory(void* addr, const size_t length, const EProtectMemory mode);
@@ -1,26 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
- #include <util/generic/utility.h>
5
- #include <util/datetime/base.h>
6
-
7
- /// portable getrusage
8
-
9
- struct TRusage {
10
- // some fields may be zero if unsupported
11
-
12
- ui64 MaxRss = 0;
13
- ui64 MajorPageFaults = 0;
14
- TDuration Utime;
15
- TDuration Stime;
16
-
17
- void Fill();
18
-
19
- static size_t GetCurrentRSS();
20
-
21
- static TRusage Get() {
22
- TRusage r;
23
- r.Fill();
24
- return r;
25
- }
26
- };
@@ -1,78 +0,0 @@
1
- #pragma once
2
-
3
- #include "guard.h"
4
- #include "defaults.h"
5
-
6
- #include <util/generic/ptr.h>
7
-
8
- class TRWMutex {
9
- public:
10
- TRWMutex();
11
- ~TRWMutex();
12
-
13
- void AcquireRead() noexcept;
14
- bool TryAcquireRead() noexcept;
15
- void ReleaseRead() noexcept;
16
-
17
- void AcquireWrite() noexcept;
18
- bool TryAcquireWrite() noexcept;
19
- void ReleaseWrite() noexcept;
20
-
21
- void Release() noexcept;
22
-
23
- private:
24
- class TImpl;
25
- THolder<TImpl> Impl_;
26
- };
27
-
28
- template <class T>
29
- struct TReadGuardOps {
30
- static inline void Acquire(T* t) noexcept {
31
- t->AcquireRead();
32
- }
33
-
34
- static inline void Release(T* t) noexcept {
35
- t->ReleaseRead();
36
- }
37
- };
38
-
39
- template <class T>
40
- struct TTryReadGuardOps: public TReadGuardOps<T> {
41
- static inline bool TryAcquire(T* t) noexcept {
42
- return t->TryAcquireRead();
43
- }
44
- };
45
-
46
- template <class T>
47
- struct TWriteGuardOps {
48
- static inline void Acquire(T* t) noexcept {
49
- t->AcquireWrite();
50
- }
51
-
52
- static inline void Release(T* t) noexcept {
53
- t->ReleaseWrite();
54
- }
55
- };
56
-
57
- template <class T>
58
- struct TTryWriteGuardOps: public TWriteGuardOps<T> {
59
- static inline bool TryAcquire(T* t) noexcept {
60
- return t->TryAcquireWrite();
61
- }
62
- };
63
-
64
- template <class T>
65
- using TReadGuardBase = TGuard<T, TReadGuardOps<T>>;
66
- template <class T>
67
- using TTryReadGuardBase = TTryGuard<T, TTryReadGuardOps<T>>;
68
-
69
- template <class T>
70
- using TWriteGuardBase = TGuard<T, TWriteGuardOps<T>>;
71
- template <class T>
72
- using TTryWriteGuardBase = TTryGuard<T, TTryWriteGuardOps<T>>;
73
-
74
- using TReadGuard = TReadGuardBase<TRWMutex>;
75
- using TTryReadGuard = TTryReadGuardBase<TRWMutex>;
76
-
77
- using TWriteGuard = TWriteGuardBase<TRWMutex>;
78
- using TTryWriteGuard = TTryWriteGuardBase<TRWMutex>;
@@ -1,122 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
-
5
- extern "C" { // sanitizers API
6
-
7
- #if defined(_asan_enabled_)
8
- void __lsan_ignore_object(const void* p);
9
- #endif
10
-
11
- #if defined(_msan_enabled_)
12
- void __msan_unpoison(const volatile void* a, size_t size);
13
- void __msan_poison(const volatile void* a, size_t size);
14
- void __msan_check_mem_is_initialized(const volatile void* x, size_t size);
15
- #endif
16
-
17
- }; // sanitizers API
18
-
19
- namespace NSan {
20
- class TFiberContext {
21
- public:
22
- TFiberContext() noexcept;
23
- TFiberContext(const void* stack, size_t len, const char* contName) noexcept;
24
-
25
- ~TFiberContext() noexcept;
26
-
27
- void BeforeFinish() noexcept;
28
- void BeforeSwitch() noexcept;
29
- void AfterSwitch() noexcept;
30
-
31
- static void AfterStart() noexcept;
32
-
33
- private:
34
- void* Token_;
35
- const void* Stack_;
36
- size_t Len_;
37
-
38
- #if defined(_tsan_enabled_)
39
- void* const CurrentTSanFiberContext_;
40
- const bool WasFiberCreated_;
41
- #endif
42
- };
43
-
44
- // Returns plain if no sanitizer enabled or sanitized otherwise
45
- // Ment to be used in test code for constants (timeouts, etc)
46
- template <typename T>
47
- inline constexpr static T PlainOrUnderSanitizer(T plain, T sanitized) noexcept {
48
- #if defined(_tsan_enabled_) || defined(_msan_enabled_) || defined(_asan_enabled_)
49
- Y_UNUSED(plain);
50
- return sanitized;
51
- #else
52
- Y_UNUSED(sanitized);
53
- return plain;
54
- #endif
55
- }
56
-
57
- // Determines if asan present
58
- inline constexpr static bool ASanIsOn() noexcept {
59
- #if defined(_asan_enabled_)
60
- return true;
61
- #else
62
- return false;
63
- #endif
64
- }
65
-
66
- // Determines if tsan present
67
- inline constexpr static bool TSanIsOn() noexcept {
68
- #if defined(_tsan_enabled_)
69
- return true;
70
- #else
71
- return false;
72
- #endif
73
- }
74
-
75
- // Determines if msan present
76
- inline constexpr static bool MSanIsOn() noexcept {
77
- #if defined(_msan_enabled_)
78
- return true;
79
- #else
80
- return false;
81
- #endif
82
- }
83
-
84
- // Make memory region fully initialized (without changing its contents).
85
- inline static void Unpoison(const volatile void* a, size_t size) noexcept {
86
- #if defined(_msan_enabled_)
87
- __msan_unpoison(a, size);
88
- #else
89
- Y_UNUSED(a);
90
- Y_UNUSED(size);
91
- #endif
92
- }
93
-
94
- // Make memory region fully uninitialized (without changing its contents).
95
- // This is a legacy interface that does not update origin information. Use __msan_allocated_memory() instead.
96
- inline static void Poison(const volatile void* a, size_t size) noexcept {
97
- #if defined(_msan_enabled_)
98
- __msan_poison(a, size);
99
- #else
100
- Y_UNUSED(a);
101
- Y_UNUSED(size);
102
- #endif
103
- }
104
-
105
- // Checks that memory range is fully initialized, and reports an error if it is not.
106
- inline static void CheckMemIsInitialized(const volatile void* a, size_t size) noexcept {
107
- #if defined(_msan_enabled_)
108
- __msan_check_mem_is_initialized(a, size);
109
- #else
110
- Y_UNUSED(a);
111
- Y_UNUSED(size);
112
- #endif
113
- }
114
-
115
- inline static void MarkAsIntentionallyLeaked(const void* ptr) noexcept {
116
- #if defined(_asan_enabled_)
117
- __lsan_ignore_object(ptr);
118
- #else
119
- Y_UNUSED(ptr);
120
- #endif
121
- }
122
- }
@@ -1,41 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
-
5
- #include <util/generic/ptr.h>
6
-
7
- //named sempahore
8
- class TSemaphore {
9
- public:
10
- TSemaphore(const char* name, ui32 maxFreeCount);
11
- ~TSemaphore();
12
-
13
- //Increase the semaphore counter.
14
- void Release() noexcept;
15
-
16
- //Keep a thread held while the semaphore counter is equal 0.
17
- void Acquire() noexcept;
18
-
19
- //Try to enter the semaphore gate. A non-blocking variant of Acquire.
20
- //Returns 'true' if the semaphore counter decreased
21
- bool TryAcquire() noexcept;
22
-
23
- private:
24
- class TImpl;
25
- THolder<TImpl> Impl_;
26
- };
27
-
28
- //unnamed semaphore, faster, than previous
29
- class TFastSemaphore {
30
- public:
31
- TFastSemaphore(ui32 maxFreeCount);
32
- ~TFastSemaphore();
33
-
34
- void Release() noexcept;
35
- void Acquire() noexcept;
36
- bool TryAcquire() noexcept;
37
-
38
- private:
39
- class TImpl;
40
- THolder<TImpl> Impl_;
41
- };