catboost 1.25.1 → 1.26.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 (289) hide show
  1. package/DEPLOYMENT.md +22 -15
  2. package/README.md +37 -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/config.js +32 -18
  10. package/build_scripts/out/install.js +5 -3
  11. package/build_scripts/out/package_prepublish.js +1 -1
  12. package/build_scripts/out/packaging.js +1 -19
  13. package/build_scripts/out/run_tests.js +1 -1
  14. package/build_scripts/out/test.js +8 -3
  15. package/config.json +18 -11
  16. package/inc/catboost/libs/model_interface/c_api.h +349 -3
  17. package/lib/catboost.d.ts +65 -21
  18. package/package.json +4 -4
  19. package/src/api_helpers.cpp +100 -24
  20. package/src/api_helpers.h +8 -7
  21. package/src/api_module.cpp +1 -2
  22. package/src/model.cpp +483 -83
  23. package/src/model.h +24 -9
  24. package/inc/contrib/libs/cxxsupp/system_stl/include/stlfwd +0 -14
  25. package/inc/util/charset/recode_result.h +0 -9
  26. package/inc/util/charset/unicode_table.h +0 -123
  27. package/inc/util/charset/unidata.h +0 -421
  28. package/inc/util/charset/utf8.h +0 -384
  29. package/inc/util/charset/wide.h +0 -843
  30. package/inc/util/charset/wide_specific.h +0 -22
  31. package/inc/util/datetime/base.h +0 -669
  32. package/inc/util/datetime/constants.h +0 -7
  33. package/inc/util/datetime/cputimer.h +0 -124
  34. package/inc/util/datetime/parser.h +0 -292
  35. package/inc/util/datetime/systime.h +0 -47
  36. package/inc/util/datetime/uptime.h +0 -8
  37. package/inc/util/digest/city.h +0 -88
  38. package/inc/util/digest/fnv.h +0 -73
  39. package/inc/util/digest/multi.h +0 -14
  40. package/inc/util/digest/murmur.h +0 -57
  41. package/inc/util/digest/numeric.h +0 -86
  42. package/inc/util/digest/sequence.h +0 -48
  43. package/inc/util/draft/date.h +0 -129
  44. package/inc/util/draft/datetime.h +0 -184
  45. package/inc/util/draft/enum.h +0 -136
  46. package/inc/util/draft/holder_vector.h +0 -102
  47. package/inc/util/draft/ip.h +0 -131
  48. package/inc/util/draft/matrix.h +0 -108
  49. package/inc/util/draft/memory.h +0 -40
  50. package/inc/util/folder/dirent_win.h +0 -46
  51. package/inc/util/folder/dirut.h +0 -121
  52. package/inc/util/folder/filelist.h +0 -81
  53. package/inc/util/folder/fts.h +0 -108
  54. package/inc/util/folder/iterator.h +0 -109
  55. package/inc/util/folder/lstat_win.h +0 -20
  56. package/inc/util/folder/path.h +0 -225
  57. package/inc/util/folder/pathsplit.h +0 -113
  58. package/inc/util/folder/tempdir.h +0 -42
  59. package/inc/util/generic/adaptor.h +0 -134
  60. package/inc/util/generic/algorithm.h +0 -765
  61. package/inc/util/generic/array_ref.h +0 -282
  62. package/inc/util/generic/array_size.h +0 -24
  63. package/inc/util/generic/benchmark/vector_count_ctor/f.h +0 -9
  64. package/inc/util/generic/bitmap.h +0 -1115
  65. package/inc/util/generic/bitops.h +0 -459
  66. package/inc/util/generic/bt_exception.h +0 -24
  67. package/inc/util/generic/buffer.h +0 -232
  68. package/inc/util/generic/cast.h +0 -176
  69. package/inc/util/generic/deque.h +0 -24
  70. package/inc/util/generic/explicit_type.h +0 -42
  71. package/inc/util/generic/fastqueue.h +0 -55
  72. package/inc/util/generic/flags.h +0 -244
  73. package/inc/util/generic/function.h +0 -103
  74. package/inc/util/generic/fwd.h +0 -171
  75. package/inc/util/generic/guid.h +0 -61
  76. package/inc/util/generic/hash.h +0 -2032
  77. package/inc/util/generic/hash_primes.h +0 -140
  78. package/inc/util/generic/hash_set.h +0 -490
  79. package/inc/util/generic/hide_ptr.h +0 -3
  80. package/inc/util/generic/intrlist.h +0 -876
  81. package/inc/util/generic/is_in.h +0 -53
  82. package/inc/util/generic/iterator.h +0 -137
  83. package/inc/util/generic/iterator_range.h +0 -105
  84. package/inc/util/generic/lazy_value.h +0 -66
  85. package/inc/util/generic/list.h +0 -22
  86. package/inc/util/generic/map.h +0 -44
  87. package/inc/util/generic/mapfindptr.h +0 -60
  88. package/inc/util/generic/maybe.h +0 -713
  89. package/inc/util/generic/maybe_traits.h +0 -164
  90. package/inc/util/generic/mem_copy.h +0 -55
  91. package/inc/util/generic/noncopyable.h +0 -38
  92. package/inc/util/generic/object_counter.h +0 -53
  93. package/inc/util/generic/ptr.h +0 -1113
  94. package/inc/util/generic/queue.h +0 -57
  95. package/inc/util/generic/refcount.h +0 -162
  96. package/inc/util/generic/reserve.h +0 -11
  97. package/inc/util/generic/scope.h +0 -65
  98. package/inc/util/generic/serialized_enum.h +0 -406
  99. package/inc/util/generic/set.h +0 -42
  100. package/inc/util/generic/singleton.h +0 -136
  101. package/inc/util/generic/size_literals.h +0 -65
  102. package/inc/util/generic/stack.h +0 -18
  103. package/inc/util/generic/store_policy.h +0 -120
  104. package/inc/util/generic/strbase.h +0 -612
  105. package/inc/util/generic/strbuf.h +0 -552
  106. package/inc/util/generic/strfcpy.h +0 -17
  107. package/inc/util/generic/string.h +0 -1572
  108. package/inc/util/generic/string_hash.h +0 -21
  109. package/inc/util/generic/string_ut.h +0 -1175
  110. package/inc/util/generic/type_name.h +0 -34
  111. package/inc/util/generic/typelist.h +0 -114
  112. package/inc/util/generic/typetraits.h +0 -325
  113. package/inc/util/generic/utility.h +0 -132
  114. package/inc/util/generic/va_args.h +0 -400
  115. package/inc/util/generic/variant.h +0 -631
  116. package/inc/util/generic/variant_traits.h +0 -171
  117. package/inc/util/generic/vector.h +0 -119
  118. package/inc/util/generic/xrange.h +0 -258
  119. package/inc/util/generic/yexception.h +0 -212
  120. package/inc/util/generic/yexception_ut.h +0 -14
  121. package/inc/util/generic/ylimits.h +0 -92
  122. package/inc/util/generic/ymath.h +0 -206
  123. package/inc/util/memory/addstorage.h +0 -93
  124. package/inc/util/memory/alloc.h +0 -27
  125. package/inc/util/memory/blob.h +0 -296
  126. package/inc/util/memory/mmapalloc.h +0 -8
  127. package/inc/util/memory/pool.h +0 -432
  128. package/inc/util/memory/segmented_string_pool.h +0 -194
  129. package/inc/util/memory/segpool_alloc.h +0 -118
  130. package/inc/util/memory/smallobj.h +0 -141
  131. package/inc/util/memory/tempbuf.h +0 -111
  132. package/inc/util/network/address.h +0 -136
  133. package/inc/util/network/endpoint.h +0 -61
  134. package/inc/util/network/hostip.h +0 -16
  135. package/inc/util/network/init.h +0 -60
  136. package/inc/util/network/interface.h +0 -17
  137. package/inc/util/network/iovec.h +0 -65
  138. package/inc/util/network/ip.h +0 -116
  139. package/inc/util/network/nonblock.h +0 -8
  140. package/inc/util/network/pair.h +0 -9
  141. package/inc/util/network/poller.h +0 -58
  142. package/inc/util/network/pollerimpl.h +0 -707
  143. package/inc/util/network/sock.h +0 -608
  144. package/inc/util/network/socket.h +0 -421
  145. package/inc/util/random/common_ops.h +0 -130
  146. package/inc/util/random/easy.h +0 -47
  147. package/inc/util/random/entropy.h +0 -21
  148. package/inc/util/random/fast.h +0 -101
  149. package/inc/util/random/init_atfork.h +0 -3
  150. package/inc/util/random/lcg_engine.h +0 -66
  151. package/inc/util/random/mersenne.h +0 -46
  152. package/inc/util/random/mersenne32.h +0 -50
  153. package/inc/util/random/mersenne64.h +0 -50
  154. package/inc/util/random/normal.h +0 -38
  155. package/inc/util/random/random.h +0 -30
  156. package/inc/util/random/shuffle.h +0 -39
  157. package/inc/util/str_stl.h +0 -266
  158. package/inc/util/stream/aligned.h +0 -99
  159. package/inc/util/stream/buffer.h +0 -119
  160. package/inc/util/stream/buffered.h +0 -225
  161. package/inc/util/stream/debug.h +0 -53
  162. package/inc/util/stream/direct_io.h +0 -43
  163. package/inc/util/stream/file.h +0 -108
  164. package/inc/util/stream/format.h +0 -444
  165. package/inc/util/stream/fwd.h +0 -100
  166. package/inc/util/stream/hex.h +0 -8
  167. package/inc/util/stream/holder.h +0 -44
  168. package/inc/util/stream/input.h +0 -273
  169. package/inc/util/stream/labeled.h +0 -19
  170. package/inc/util/stream/length.h +0 -100
  171. package/inc/util/stream/mem.h +0 -255
  172. package/inc/util/stream/multi.h +0 -32
  173. package/inc/util/stream/null.h +0 -61
  174. package/inc/util/stream/output.h +0 -304
  175. package/inc/util/stream/pipe.h +0 -112
  176. package/inc/util/stream/printf.h +0 -25
  177. package/inc/util/stream/str.h +0 -207
  178. package/inc/util/stream/tee.h +0 -28
  179. package/inc/util/stream/tempbuf.h +0 -21
  180. package/inc/util/stream/tokenizer.h +0 -214
  181. package/inc/util/stream/trace.h +0 -60
  182. package/inc/util/stream/walk.h +0 -35
  183. package/inc/util/stream/zerocopy.h +0 -91
  184. package/inc/util/stream/zerocopy_output.h +0 -57
  185. package/inc/util/stream/zlib.h +0 -173
  186. package/inc/util/string/ascii.h +0 -236
  187. package/inc/util/string/builder.h +0 -39
  188. package/inc/util/string/cast.h +0 -347
  189. package/inc/util/string/cstriter.h +0 -14
  190. package/inc/util/string/escape.h +0 -70
  191. package/inc/util/string/hex.h +0 -59
  192. package/inc/util/string/join.h +0 -194
  193. package/inc/util/string/printf.h +0 -13
  194. package/inc/util/string/reverse.h +0 -16
  195. package/inc/util/string/split.h +0 -1080
  196. package/inc/util/string/strip.h +0 -257
  197. package/inc/util/string/strspn.h +0 -65
  198. package/inc/util/string/subst.h +0 -56
  199. package/inc/util/string/type.h +0 -50
  200. package/inc/util/string/util.h +0 -195
  201. package/inc/util/string/vector.h +0 -132
  202. package/inc/util/system/align.h +0 -50
  203. package/inc/util/system/atexit.h +0 -22
  204. package/inc/util/system/atomic.h +0 -51
  205. package/inc/util/system/atomic_gcc.h +0 -90
  206. package/inc/util/system/atomic_ops.h +0 -189
  207. package/inc/util/system/atomic_win.h +0 -114
  208. package/inc/util/system/backtrace.h +0 -39
  209. package/inc/util/system/byteorder.h +0 -186
  210. package/inc/util/system/compat.h +0 -84
  211. package/inc/util/system/compiler.h +0 -620
  212. package/inc/util/system/condvar.h +0 -71
  213. package/inc/util/system/context.h +0 -181
  214. package/inc/util/system/context_aarch64.h +0 -8
  215. package/inc/util/system/context_i686.h +0 -9
  216. package/inc/util/system/context_x86.h +0 -12
  217. package/inc/util/system/context_x86_64.h +0 -7
  218. package/inc/util/system/cpu_id.h +0 -159
  219. package/inc/util/system/daemon.h +0 -28
  220. package/inc/util/system/datetime.h +0 -98
  221. package/inc/util/system/defaults.h +0 -149
  222. package/inc/util/system/demangle.h +0 -5
  223. package/inc/util/system/demangle_impl.h +0 -23
  224. package/inc/util/system/direct_io.h +0 -71
  225. package/inc/util/system/dynlib.h +0 -119
  226. package/inc/util/system/env.h +0 -32
  227. package/inc/util/system/error.h +0 -95
  228. package/inc/util/system/event.h +0 -122
  229. package/inc/util/system/execpath.h +0 -17
  230. package/inc/util/system/fasttime.h +0 -6
  231. package/inc/util/system/fhandle.h +0 -27
  232. package/inc/util/system/file.h +0 -210
  233. package/inc/util/system/file_lock.h +0 -34
  234. package/inc/util/system/filemap.h +0 -383
  235. package/inc/util/system/flock.h +0 -35
  236. package/inc/util/system/fs.h +0 -156
  237. package/inc/util/system/fs_win.h +0 -29
  238. package/inc/util/system/fstat.h +0 -46
  239. package/inc/util/system/getpid.h +0 -12
  240. package/inc/util/system/guard.h +0 -179
  241. package/inc/util/system/hi_lo.h +0 -139
  242. package/inc/util/system/hostname.h +0 -10
  243. package/inc/util/system/hp_timer.h +0 -36
  244. package/inc/util/system/info.h +0 -12
  245. package/inc/util/system/interrupt_signals.h +0 -22
  246. package/inc/util/system/madvise.h +0 -30
  247. package/inc/util/system/maxlen.h +0 -32
  248. package/inc/util/system/mem_info.h +0 -18
  249. package/inc/util/system/mincore.h +0 -38
  250. package/inc/util/system/mktemp.h +0 -11
  251. package/inc/util/system/mlock.h +0 -43
  252. package/inc/util/system/mutex.h +0 -67
  253. package/inc/util/system/nice.h +0 -3
  254. package/inc/util/system/pipe.h +0 -90
  255. package/inc/util/system/platform.h +0 -246
  256. package/inc/util/system/progname.h +0 -13
  257. package/inc/util/system/protect.h +0 -25
  258. package/inc/util/system/rusage.h +0 -26
  259. package/inc/util/system/rwlock.h +0 -78
  260. package/inc/util/system/sanitizers.h +0 -122
  261. package/inc/util/system/sem.h +0 -41
  262. package/inc/util/system/shellcommand.h +0 -472
  263. package/inc/util/system/shmat.h +0 -32
  264. package/inc/util/system/sigset.h +0 -78
  265. package/inc/util/system/spin_wait.h +0 -10
  266. package/inc/util/system/spinlock.h +0 -121
  267. package/inc/util/system/src_location.h +0 -25
  268. package/inc/util/system/src_root.h +0 -68
  269. package/inc/util/system/sys_alloc.h +0 -43
  270. package/inc/util/system/sysstat.h +0 -52
  271. package/inc/util/system/tempfile.h +0 -34
  272. package/inc/util/system/thread.h +0 -167
  273. package/inc/util/system/tls.h +0 -307
  274. package/inc/util/system/types.h +0 -119
  275. package/inc/util/system/unaligned_mem.h +0 -67
  276. package/inc/util/system/user.h +0 -5
  277. package/inc/util/system/utime.h +0 -6
  278. package/inc/util/system/valgrind.h +0 -48
  279. package/inc/util/system/winint.h +0 -43
  280. package/inc/util/system/yassert.h +0 -121
  281. package/inc/util/system/yield.h +0 -4
  282. package/inc/util/thread/factory.h +0 -65
  283. package/inc/util/thread/fwd.h +0 -30
  284. package/inc/util/thread/lfqueue.h +0 -406
  285. package/inc/util/thread/lfstack.h +0 -188
  286. package/inc/util/thread/pool.h +0 -388
  287. package/inc/util/thread/singleton.h +0 -42
  288. package/inc/util/ysafeptr.h +0 -427
  289. package/inc/util/ysaveload.h +0 -700
@@ -1,71 +0,0 @@
1
- #pragma once
2
-
3
- #include "align.h"
4
-
5
- #include "file.h"
6
- #include <util/generic/buffer.h>
7
-
8
- // Supports Linux Direct-IO:
9
- // - Simple buffering logic.
10
- // - Default buffer size of 128KB matches VM page writeback granularity, to maximize IO throughput.
11
- // - Supports writing odd sized files by turning off direct IO for the last chunk.
12
- class TDirectIOBufferedFile {
13
- public:
14
- TDirectIOBufferedFile(const TString& path, EOpenMode oMode, size_t buflen = 1 << 17);
15
- ~TDirectIOBufferedFile();
16
-
17
- void FlushData();
18
- void Finish();
19
- size_t Read(void* buffer, size_t byteCount);
20
- void Write(const void* buffer, size_t byteCount);
21
- size_t Pread(void* buffer, size_t byteCount, ui64 offset);
22
- void Pwrite(const void* buffer, size_t byteCount, ui64 offset);
23
-
24
- inline bool IsOpen() const {
25
- return true;
26
- }
27
-
28
- inline ui64 GetWritePosition() const {
29
- return WritePosition;
30
- }
31
-
32
- inline ui64 GetLength() const {
33
- return FlushedBytes + DataLen;
34
- }
35
-
36
- inline FHANDLE GetHandle() {
37
- return File.GetHandle();
38
- }
39
-
40
- inline void FallocateNoResize(ui64 length) {
41
- File.FallocateNoResize(length);
42
- }
43
-
44
- private:
45
- inline bool IsAligned(i64 value) {
46
- return Alignment ? value == AlignDown<i64>(value, Alignment) : true;
47
- }
48
-
49
- inline bool IsAligned(const void* value) {
50
- return Alignment ? value == AlignDown(value, Alignment) : true;
51
- }
52
-
53
- size_t PreadSafe(void* buffer, size_t byteCount, ui64 offset);
54
- size_t ReadFromFile(void* buffer, size_t byteCount, ui64 offset);
55
- void WriteToFile(const void* buf, size_t len, ui64 position);
56
- void WriteToBuffer(const void* buf, size_t len, ui64 position);
57
- void SetDirectIO(bool value);
58
-
59
- private:
60
- TFile File;
61
- size_t Alignment;
62
- size_t BufLen;
63
- size_t DataLen;
64
- void* Buffer;
65
- TBuffer BufferStorage;
66
- ui64 ReadPosition;
67
- ui64 WritePosition;
68
- ui64 FlushedBytes;
69
- ui64 FlushedToDisk;
70
- bool DirectIO;
71
- };
@@ -1,119 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
-
5
- #include <util/generic/ptr.h>
6
- #include <util/generic/string.h>
7
-
8
- #define Y_GET_FUNC(dll, name) FUNC_##name((dll).Sym(#name))
9
- #define Y_GET_FUNC_OPTIONAL(dll, name) FUNC_##name((dll).SymOptional(#name))
10
-
11
- #ifdef _win32_
12
- #define DEFAULT_DLLOPEN_FLAGS 0
13
- #else
14
- #include <dlfcn.h>
15
-
16
- #ifndef RTLD_GLOBAL
17
- #define RTLD_GLOBAL (0)
18
- #endif
19
-
20
- #define DEFAULT_DLLOPEN_FLAGS (RTLD_NOW | RTLD_GLOBAL)
21
- #endif
22
-
23
- class TDynamicLibrary {
24
- public:
25
- TDynamicLibrary() noexcept;
26
- TDynamicLibrary(const TString& path, int flags = DEFAULT_DLLOPEN_FLAGS);
27
- ~TDynamicLibrary();
28
-
29
- void Open(const char* path, int flags = DEFAULT_DLLOPEN_FLAGS);
30
- void Close() noexcept;
31
- void* SymOptional(const char* name) noexcept;
32
- void* Sym(const char* name);
33
- bool IsLoaded() const noexcept;
34
- void SetUnloadable(bool unloadable); // Set to false to avoid unloading on destructor
35
-
36
- private:
37
- class TImpl;
38
- THolder<TImpl> Impl_;
39
- };
40
-
41
- // a wrapper for a symbol
42
- template <class TLib>
43
- class TExternalSymbol {
44
- private:
45
- TLib* PLib;
46
- TDynamicLibrary* DLib;
47
- TString lname;
48
- TString vname;
49
-
50
- public:
51
- TExternalSymbol() noexcept {
52
- PLib = nullptr;
53
- DLib = nullptr;
54
- }
55
- TExternalSymbol(const TExternalSymbol& es) {
56
- PLib = nullptr;
57
- DLib = nullptr;
58
- if (es.IsDynamic())
59
- Open(es.LibName().data(), es.VtblName().data());
60
- else if (es.IsStatic())
61
- SetSym(es.Symbol());
62
- }
63
- TExternalSymbol& operator=(const TExternalSymbol& es) {
64
- if (this != &es) {
65
- Close();
66
- if (es.IsDynamic())
67
- Open(es.LibName().data(), es.VtblName().data());
68
- else if (es.IsStatic())
69
- SetSym(es.Symbol());
70
- }
71
- return *this;
72
- }
73
- ~TExternalSymbol() {
74
- delete DLib;
75
- }
76
- // set the symbol from dynamic source
77
- void Open(const char* lib_name, const char* vtbl_name) {
78
- if (DLib != nullptr || PLib != nullptr)
79
- return;
80
- try {
81
- DLib = new TDynamicLibrary();
82
- DLib->Open(lib_name);
83
- PLib = (TLib*)DLib->Sym(vtbl_name);
84
- } catch (...) {
85
- delete DLib;
86
- DLib = nullptr;
87
- throw;
88
- }
89
- lname = lib_name;
90
- vname = vtbl_name;
91
- }
92
- // set the symbol from static source
93
- void SetSym(TLib* pl) noexcept {
94
- if (DLib == nullptr && PLib == nullptr)
95
- PLib = pl;
96
- }
97
- void Close() noexcept {
98
- delete DLib;
99
- DLib = 0;
100
- PLib = 0;
101
- lname.remove();
102
- vname.remove();
103
- }
104
- TLib* Symbol() const noexcept {
105
- return PLib;
106
- }
107
- const TString& LibName() const noexcept {
108
- return lname;
109
- }
110
- const TString& VtblName() const noexcept {
111
- return vname;
112
- }
113
- bool IsStatic() const noexcept {
114
- return DLib == nullptr && PLib != nullptr;
115
- }
116
- bool IsDynamic() const noexcept {
117
- return DLib && DLib->IsLoaded() && PLib != nullptr;
118
- }
119
- };
@@ -1,32 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/generic/string.h>
4
-
5
- /**
6
- * Search the environment list provided by the host environment for associated variable.
7
- *
8
- * @param key String identifying the name of the environmental variable to look for
9
- * @param def String that returns if environmental variable not found by key
10
- *
11
- * @return String that is associated with the matched environment variable or empty string if
12
- * such variable is missing.
13
- *
14
- * @note Use it only in pair with `SetEnv` as there may be inconsistency in their behaviour
15
- * otherwise.
16
- * @note Calls to `GetEnv` and `SetEnv` from different threads must be synchronized.
17
- * @see SetEnv
18
- */
19
- TString GetEnv(const TString& key, const TString& def = TString());
20
-
21
- /**
22
- * Add or change environment variable provided by the host environment.
23
- *
24
- * @key String identifying the name of the environment variable to set or change
25
- * @value Value to assign
26
-
27
- * @note Use it only in pair with `GetEnv` as there may be inconsistency in their behaviour
28
- * otherwise.
29
- * @note Calls to `GetEnv` and `SetEnv` from different threads must be synchronized.
30
- * @see GetEnv
31
- */
32
- void SetEnv(const TString& key, const TString& value);
@@ -1,95 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
-
5
- #if defined(_win_)
6
- #include <winerror.h>
7
- #include <errno.h>
8
-
9
- #undef E_FAIL
10
- #undef ERROR_TIMEOUT
11
-
12
- #if defined(_MSC_VER)
13
- #undef EADDRINUSE
14
- #undef EADDRNOTAVAIL
15
- #undef EAFNOSUPPORT
16
- #undef EALREADY
17
- #undef ECANCELED
18
- #undef ECONNABORTED
19
- #undef ECONNREFUSED
20
- #undef ECONNRESET
21
- #undef EDESTADDRREQ
22
- #undef EHOSTUNREACH
23
- #undef EINPROGRESS
24
- #undef EISCONN
25
- #undef ELOOP
26
- #undef EMSGSIZE
27
- #undef ENETDOWN
28
- #undef ENETRESET
29
- #undef ENETUNREACH
30
- #undef ENOBUFS
31
- #undef ENOPROTOOPT
32
- #undef ENOTCONN
33
- #undef ENOTSOCK
34
- #undef EOPNOTSUPP
35
- #undef EPROTONOSUPPORT
36
- #undef EPROTOTYPE
37
- #undef ETIMEDOUT
38
- #undef EWOULDBLOCK
39
- #undef ENAMETOOLONG
40
- #undef ENOTEMPTY
41
-
42
- #define EWOULDBLOCK WSAEWOULDBLOCK
43
- #define EINPROGRESS WSAEINPROGRESS
44
- #define EALREADY WSAEALREADY
45
- #define ENOTSOCK WSAENOTSOCK
46
- #define EDESTADDRREQ WSAEDESTADDRREQ
47
- #define EMSGSIZE WSAEMSGSIZE
48
- #define EPROTOTYPE WSAEPROTOTYPE
49
- #define ENOPROTOOPT WSAENOPROTOOPT
50
- #define EPROTONOSUPPORT WSAEPROTONOSUPPORT
51
- #define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
52
- #define EOPNOTSUPP WSAEOPNOTSUPP
53
- #define EPFNOSUPPORT WSAEPFNOSUPPORT
54
- #define EAFNOSUPPORT WSAEAFNOSUPPORT
55
- #define EADDRINUSE WSAEADDRINUSE
56
- #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
57
- #define ENETDOWN WSAENETDOWN
58
- #define ENETUNREACH WSAENETUNREACH
59
- #define ENETRESET WSAENETRESET
60
- #define ECONNABORTED WSAECONNABORTED
61
- #define ECONNRESET WSAECONNRESET
62
- #define ENOBUFS WSAENOBUFS
63
- #define EISCONN WSAEISCONN
64
- #define ENOTCONN WSAENOTCONN
65
- #define ESHUTDOWN WSAESHUTDOWN
66
- #define ETOOMANYREFS WSAETOOMANYREFS
67
- #define ETIMEDOUT WSAETIMEDOUT
68
- #define ECONNREFUSED WSAECONNREFUSED
69
- #define ELOOP WSAELOOP
70
- #define ENAMETOOLONG WSAENAMETOOLONG
71
- #define EHOSTDOWN WSAEHOSTDOWN
72
- #define EHOSTUNREACH WSAEHOSTUNREACH
73
- #define ENOTEMPTY WSAENOTEMPTY
74
- #define EPROCLIM WSAEPROCLIM
75
- #define EUSERS WSAEUSERS
76
- #define ESTALE WSAESTALE
77
- #define EREMOTE WSAEREMOTE
78
- #define ECANCELED WSAECANCELLED
79
- #endif
80
-
81
- #define EDQUOT WSAEDQUOT
82
- #endif
83
-
84
- void ClearLastSystemError();
85
- int LastSystemError();
86
- void LastSystemErrorText(char* str, size_t size, int code);
87
- const char* LastSystemErrorText(int code);
88
-
89
- inline const char* LastSystemErrorText() {
90
- return LastSystemErrorText(LastSystemError());
91
- }
92
-
93
- inline void LastSystemErrorText(char* str, size_t size) {
94
- LastSystemErrorText(str, size, LastSystemError());
95
- }
@@ -1,122 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/generic/ptr.h>
4
- #include <util/datetime/base.h>
5
-
6
- struct TEventResetType {
7
- enum ResetMode {
8
- rAuto, // the state will be nonsignaled after Wait() returns
9
- rManual, // we need call Reset() to set the state to nonsignaled.
10
- };
11
- };
12
-
13
- /**
14
- * DEPRECATED!
15
- *
16
- * Use TAutoEvent, TManualEvent for the direct replacement.
17
- * Use TManualEvent to prevent SEGFAULT (http://nga.at.yandex-team.ru/5772).
18
- */
19
- class TSystemEvent: public TEventResetType {
20
- public:
21
- TSystemEvent(ResetMode rmode = rManual);
22
- TSystemEvent(const TSystemEvent& other) noexcept;
23
- TSystemEvent& operator=(const TSystemEvent& other) noexcept;
24
-
25
- ~TSystemEvent();
26
-
27
- void Reset() noexcept;
28
- void Signal() noexcept;
29
-
30
- /*
31
- * return true if signaled, false if timed out.
32
- */
33
- bool WaitD(TInstant deadLine) noexcept;
34
-
35
- /*
36
- * return true if signaled, false if timed out.
37
- */
38
- inline bool WaitT(TDuration timeOut) noexcept {
39
- return WaitD(timeOut.ToDeadLine());
40
- }
41
-
42
- /*
43
- * wait infinite time
44
- */
45
- inline void WaitI() noexcept {
46
- WaitD(TInstant::Max());
47
- }
48
-
49
- //return true if signaled, false if timed out.
50
- inline bool Wait(ui32 timer) noexcept {
51
- return WaitT(TDuration::MilliSeconds(timer));
52
- }
53
-
54
- inline bool Wait() noexcept {
55
- WaitI();
56
-
57
- return true;
58
- }
59
-
60
- private:
61
- class TEvImpl;
62
- TIntrusivePtr<TEvImpl> EvImpl_;
63
- };
64
-
65
- class TAutoEvent: public TSystemEvent {
66
- public:
67
- TAutoEvent()
68
- : TSystemEvent(TSystemEvent::rAuto)
69
- {
70
- }
71
-
72
- private:
73
- void Reset() noexcept;
74
- };
75
-
76
- /**
77
- * Prevents from a "shortcut problem" (see http://nga.at.yandex-team.ru/5772): if Wait will be called after Signaled
78
- * flag set to true in Signal method but before CondVar.BroadCast - Wait will shortcut (without actual wait on condvar).
79
- * If Wait thread will destruct event - Signal thread will do broadcast on a destructed CondVar.
80
- */
81
- class TManualEvent {
82
- public:
83
- TManualEvent()
84
- : Ev(TEventResetType::rManual)
85
- {
86
- }
87
-
88
- void Reset() noexcept {
89
- TSystemEvent{Ev}.Reset();
90
- }
91
-
92
- void Signal() noexcept {
93
- TSystemEvent{Ev}.Signal();
94
- }
95
-
96
- /** return true if signaled, false if timed out. */
97
- bool WaitD(TInstant deadLine) noexcept {
98
- return TSystemEvent{Ev}.WaitD(deadLine);
99
- }
100
-
101
- /** return true if signaled, false if timed out. */
102
- inline bool WaitT(TDuration timeOut) noexcept {
103
- return TSystemEvent{Ev}.WaitT(timeOut);
104
- }
105
-
106
- /** Wait infinite time */
107
- inline void WaitI() noexcept {
108
- TSystemEvent{Ev}.WaitI();
109
- }
110
-
111
- /** return true if signaled, false if timed out. */
112
- inline bool Wait(ui32 timer) noexcept {
113
- return TSystemEvent{Ev}.Wait(timer);
114
- }
115
-
116
- inline bool Wait() noexcept {
117
- return TSystemEvent{Ev}.Wait();
118
- }
119
-
120
- private:
121
- TSystemEvent Ev;
122
- };
@@ -1,17 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/generic/fwd.h>
4
-
5
- // NOTE: This function has rare sporadic failures (throws exceptions) on FreeBSD. See REVIEW:54297
6
- const TString& GetExecPath();
7
-
8
- /**
9
- * Get openable path to the binary currently being executed.
10
- *
11
- * The path does not match the original binary location, but stays openable even
12
- * if the binary was moved or removed.
13
- *
14
- * On UNIX variants, utilizes the /proc FS. On Windows, equivalent to
15
- * GetExecPath.
16
- */
17
- const TString& GetPersistentExecPath();
@@ -1,6 +0,0 @@
1
- #pragma once
2
-
3
- #include "datetime.h"
4
-
5
- /// Fast but possibly less accurate microseconds since epoch
6
- ui64 InterpolatedMicroSeconds();
@@ -1,27 +0,0 @@
1
- #pragma once
2
-
3
- #include "defaults.h"
4
-
5
- using WIN_HANDLE = void*;
6
- #define INVALID_WIN_HANDLE ((WIN_HANDLE)(long)-1)
7
-
8
- using UNIX_HANDLE = int;
9
- #define INVALID_UNIX_HANDLE -1
10
-
11
- #if defined(_win_)
12
- using FHANDLE = WIN_HANDLE;
13
- #define INVALID_FHANDLE INVALID_WIN_HANDLE
14
- #elif defined(_unix_)
15
- using FHANDLE = UNIX_HANDLE;
16
- #define INVALID_FHANDLE INVALID_UNIX_HANDLE
17
- #else
18
- #error
19
- #endif
20
-
21
- #if defined(_cygwin_)
22
- using OS_HANDLE = WIN_HANDLE;
23
- #define INVALID_OS_HANDLE INVALID_WIN_HANDLE
24
- #else
25
- using OS_HANDLE = FHANDLE;
26
- #define INVALID_OS_HANDLE INVALID_FHANDLE
27
- #endif
@@ -1,210 +0,0 @@
1
- #pragma once
2
-
3
- #include "fhandle.h"
4
- #include "flock.h"
5
-
6
- #include <util/generic/flags.h>
7
- #include <util/generic/ptr.h>
8
- #include <util/generic/noncopyable.h>
9
-
10
- #include <cstdio>
11
-
12
- enum EOpenModeFlag {
13
- OpenExisting = 0, // Opens a file. It fails if the file does not exist.
14
- TruncExisting = 1, // Opens a file and truncates it to zero size. It fails if the file does not exist.
15
- OpenAlways = 2, // Opens a file, always. If a file does not exist, it creates a file.
16
- CreateNew = 3, // Creates a new file. It fails if a specified file exists.
17
- CreateAlways = 4, // Creates a new file, always. If a file exists, it overwrites the file.
18
- MaskCreation = 7,
19
-
20
- RdOnly = 8, // open for reading only
21
- WrOnly = 16, // open for writing only
22
- RdWr = 24, // open for reading and writing
23
- MaskRW = 24,
24
-
25
- Seq = 0x20, // file access is primarily sequential (POSIX_FADV_SEQUENTIAL)
26
- Direct = 0x40, // file is being opened with no system caching (Does not work as intended! See implementation)
27
- Temp = 0x80, // avoid writing data back to disk if sufficient cache memory is available (no op for linux)
28
- ForAppend = 0x100, // write appends data to the end of file (O_APPEND)
29
- Transient = 0x200, // actually, temporary file - 'delete on close' for windows, unlink after creation for unix
30
- NoReuse = 0x400, // no second access expected (POSIX_FADV_NOREUSE)
31
- CloseOnExec = 0x800, // set close-on-exec right at open (O_CLOEXEC)
32
- DirectAligned = 0x1000, // file is actually being opened with no system caching (may require buffer alignment) (O_DIRECT)
33
- Sync = 0x2000, // no write call will return before the data is transferred to the disk (O_SYNC)
34
- NoReadAhead = 0x4000, // no sequential access expected, opposite for Seq (POSIX_FADV_RANDOM)
35
-
36
- AXOther = 0x00010000,
37
- AWOther = 0x00020000,
38
- AROther = 0x00040000,
39
- AXGroup = 0x00100000,
40
- AWGroup = 0x00200000,
41
- ARGroup = 0x00400000,
42
- AXUser = 0x01000000,
43
- AWUser = 0x02000000,
44
- ARUser = 0x04000000,
45
- AX = AXUser | AXGroup | AXOther,
46
- AW = AWUser | AWGroup,
47
- AR = ARUser | ARGroup | AROther,
48
- ARW = AR | AW,
49
- AMask = 0x0FFF0000,
50
- };
51
-
52
- Y_DECLARE_FLAGS(EOpenMode, EOpenModeFlag)
53
- Y_DECLARE_OPERATORS_FOR_FLAGS(EOpenMode)
54
-
55
- TString DecodeOpenMode(ui32 openMode);
56
-
57
- enum SeekDir {
58
- sSet = 0,
59
- sCur = 1,
60
- sEnd = 2,
61
- };
62
-
63
- class TFileHandle: public TNonCopyable {
64
- public:
65
- constexpr TFileHandle() = default;
66
-
67
- /// Warning: takes ownership of fd, so closes it in destructor.
68
- inline TFileHandle(FHANDLE fd) noexcept
69
- : Fd_(fd)
70
- {
71
- }
72
-
73
- inline TFileHandle(TFileHandle&& other) noexcept
74
- : Fd_(other.Fd_)
75
- {
76
- other.Fd_ = INVALID_FHANDLE;
77
- }
78
-
79
- TFileHandle(const TString& fName, EOpenMode oMode) noexcept;
80
-
81
- inline ~TFileHandle() {
82
- Close();
83
- }
84
-
85
- bool Close() noexcept;
86
-
87
- inline FHANDLE Release() noexcept {
88
- FHANDLE ret = Fd_;
89
- Fd_ = INVALID_FHANDLE;
90
- return ret;
91
- }
92
-
93
- inline void Swap(TFileHandle& r) noexcept {
94
- DoSwap(Fd_, r.Fd_);
95
- }
96
-
97
- inline operator FHANDLE() const noexcept {
98
- return Fd_;
99
- }
100
-
101
- inline bool IsOpen() const noexcept {
102
- return Fd_ != INVALID_FHANDLE;
103
- }
104
-
105
- i64 GetPosition() const noexcept;
106
- i64 GetLength() const noexcept;
107
-
108
- i64 Seek(i64 offset, SeekDir origin) noexcept;
109
- bool Resize(i64 length) noexcept;
110
- bool Reserve(i64 length) noexcept;
111
- bool FallocateNoResize(i64 length) noexcept;
112
- bool Flush() noexcept;
113
- //flush data only, without file metadata
114
- bool FlushData() noexcept;
115
- i32 Read(void* buffer, ui32 byteCount) noexcept;
116
- i32 Write(const void* buffer, ui32 byteCount) noexcept;
117
- i32 Pread(void* buffer, ui32 byteCount, i64 offset) const noexcept;
118
- i32 Pwrite(const void* buffer, ui32 byteCount, i64 offset) const noexcept;
119
- int Flock(int op) noexcept;
120
-
121
- FHANDLE Duplicate() const noexcept;
122
- int Duplicate2Posix(int dstHandle) const noexcept;
123
-
124
- //dup2 - like semantics, return true on success
125
- bool LinkTo(const TFileHandle& fh) const noexcept;
126
-
127
- //very low-level methods
128
- bool SetDirect();
129
- void ResetDirect();
130
-
131
- /* Manual file cache management, length = 0 means "as much as possible" */
132
-
133
- //measure amount of cached data in bytes, returns -1 if failed
134
- i64 CountCache(i64 offset = 0, i64 length = 0) const noexcept;
135
- //read data into cache and optionally wait for completion
136
- void PrefetchCache(i64 offset = 0, i64 length = 0, bool wait = true) const noexcept;
137
- //remove clean and unused data from cache
138
- void EvictCache(i64 offset = 0, i64 length = 0) const noexcept;
139
- //flush unwritten data in this range and optionally wait for completion
140
- bool FlushCache(i64 offset = 0, i64 length = 0, bool wait = true) noexcept;
141
-
142
- private:
143
- FHANDLE Fd_ = INVALID_FHANDLE;
144
- };
145
-
146
- class TFile {
147
- public:
148
- TFile();
149
- /// Takes ownership of handle, so closes it when the last holder of descriptor dies.
150
- explicit TFile(FHANDLE fd);
151
- TFile(FHANDLE fd, const TString& fname);
152
- TFile(const TString& fName, EOpenMode oMode);
153
- ~TFile();
154
-
155
- void Close();
156
-
157
- const TString& GetName() const noexcept;
158
- i64 GetPosition() const noexcept;
159
- i64 GetLength() const noexcept;
160
- bool IsOpen() const noexcept;
161
- FHANDLE GetHandle() const noexcept;
162
-
163
- i64 Seek(i64 offset, SeekDir origin);
164
- void Resize(i64 length);
165
- void Reserve(i64 length);
166
- void FallocateNoResize(i64 length);
167
- void Flush();
168
- void FlushData();
169
-
170
- void LinkTo(const TFile& f) const;
171
- TFile Duplicate() const;
172
-
173
- size_t Read(void* buf, size_t len);
174
- size_t ReadOrFail(void* buf, size_t len);
175
- i32 RawRead(void* buf, size_t len);
176
- void Load(void* buf, size_t len);
177
- void Write(const void* buf, size_t len);
178
- size_t Pread(void* buf, size_t len, i64 offset) const;
179
- i32 RawPread(void* buf, ui32 len, i64 offset) const;
180
- void Pload(void* buf, size_t len, i64 offset) const;
181
- void Pwrite(const void* buf, size_t len, i64 offset) const;
182
- void Flock(int op);
183
-
184
- //do not use, their meaning very platform-dependant
185
- void SetDirect();
186
- void ResetDirect();
187
-
188
- /* Manual file cache management, length = 0 means "as much as possible" */
189
-
190
- //measure amount of cached data in bytes, returns -1 if failed
191
- i64 CountCache(i64 offset = 0, i64 length = 0) const noexcept;
192
- //read data into cache and optionally wait for completion
193
- void PrefetchCache(i64 offset = 0, i64 length = 0, bool wait = true) const noexcept;
194
- //remove clean and unused data from cache, incomplete pages could stay
195
- void EvictCache(i64 offset = 0, i64 length = 0) const noexcept;
196
- //flush unwritten data in this range and optionally wait for completion
197
- void FlushCache(i64 offset = 0, i64 length = 0, bool wait = true);
198
-
199
- static TFile Temporary(const TString& prefix);
200
- static TFile ForAppend(const TString& path);
201
-
202
- private:
203
- class TImpl;
204
- TSimpleIntrusivePtr<TImpl> Impl_;
205
- };
206
-
207
- TFile Duplicate(FILE*);
208
- TFile Duplicate(int);
209
-
210
- bool PosixDisableReadAhead(FHANDLE fileHandle, void* addr) noexcept;