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 ============= =========
141 ============= =========
143 Localized String Functions
144 ==========================
146 These functions require locale.h, and will be added when locale support is
147 implemented in LLVM-libc.
149 ============= =========
150 Function Name Available
151 ============= =========
154 ============= =========
156 ---------------------------
157 \<name\>_s String Functions
158 ---------------------------
160 Many String functions have an equivalent _s version, which is intended to be
161 more secure and safe than the previous standard. These functions add runtime
162 error detection and overflow protection. While they can be seen as an
163 improvement, adoption remains relatively low among users. In addition, they are
164 being considered for removal, see
165 `Field Experience With Annex K — Bounds Checking Interfaces
166 <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1967.htm>`_. For these reasons,
167 there is no ongoing work to implement them.