11 - The main source for string functions is located at:
14 - The source for string conversion functions is located at:
15 ``libc/src/stdlib`` and
16 ``libc/src/__support``.
18 - The tests are located at:
19 ``libc/test/src/string``,
20 ``libc/test/src/stdlib``, and
21 ``libc/test/src/__support``
28 Primary memory functions
29 ========================
31 .. TODO(gchatelet): add details about the memory functions.
34 ============= =========
35 Function Name Available
36 ============= =========
44 ============= =========
47 Other Raw Memory Functions
48 ==========================
50 ============= =========
51 Function Name Available
52 ============= =========
57 ============= =========
59 String Memory Functions
60 =======================
62 ============= =========
63 Function Name Available
64 ============= =========
73 ============= =========
75 String Examination Functions
76 ============================
78 ============= =========
79 Function Name Available
80 ============= =========
93 ============= =========
95 String Conversion Functions
96 ============================
98 These functions are not in strings.h, but are still primarily string
99 functions, and are therefore tracked along with the rest of the string
102 The String to float functions were implemented using the Eisel-Lemire algorithm
103 (read more about the algorithm here: `The Eisel-Lemire ParseNumberF64 Algorithm
104 <https://nigeltao.github.io/blog/2020/eisel-lemire.html>`_). This improved
105 the performance of string to float and double, and allowed it to complete this
106 comprehensive test 15% faster than glibc: `Parse Number FXX Test Data
107 <https://github.com/nigeltao/parse-number-fxx-test-data>`_. The test was done
108 with LLVM-libc built on 2022-04-14 and Debian GLibc version 2.33-6. The targets
109 ``libc_str_to_float_comparison_test`` and
110 ``libc_system_str_to_float_comparison_test`` were built and run on the test data
111 10 times each, skipping the first run since it was an outlier.
114 ============= =========
115 Function Name Available
116 ============= =========
130 ============= =========
132 String Error Functions
133 ======================
135 ============= =========
136 Function Name Available
137 ============= =========
140 ============= =========
142 Localized String Functions
143 ==========================
145 These functions require locale.h, and will be finished when locale support is
146 implemented in LLVM-libc.
148 ============= =========
149 Function Name Available
150 ============= =========
153 ============= =========
155 ---------------------------
156 \<name\>_s String Functions
157 ---------------------------
159 Many String functions have an equivalent _s version, which is intended to be
160 more secure and safe than the previous standard. These functions add runtime
161 error detection and overflow protection. While they can be seen as an
162 improvement, adoption remains relatively low among users. In addition, they are
163 being considered for removal, see
164 `Field Experience With Annex K — Bounds Checking Interfaces
165 <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1967.htm>`_. For these reasons,
166 there is no ongoing work to implement them.