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,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;