Joseph Ferano
daed039331
Typed = and != grow strings — M2 queue item 5
...
Types.is_equatable splits from is_comparable: a string answers equal?
now, bytewise, but still answers no to ordered? — there is no collation
the language has picked, so < and friends keep the refusal they had.
The comparison itself is one new runtime entry point, flan_str_eq
(runtime/flan_rt.c), length-mismatch and same-pointer fast paths ahead
of the memcmp, called identically from both backends: emit.ml pulls a
string's ptr and length out of the %slice SSA value and calls it
directly in the Eq/Ne arm; x86.ml adds an arm ahead of the generic
scalar comparison that reaches it through call_native, flipping the
answer for != the same way Not already flips a bool.
test_flan.ml covers the checker side directly and through a generic
instantiated at string, including the two different ways ordered? and
equal? fail at that type. test/programs/string-eq.flan is the survey
program — same pointer, differing lengths, equal content at distinct
addresses (a literal against a fresh heap string), a difference in the
last byte, and the empty-string cases — with acceptance rows for LLVM,
-O0 and --x86 in test_acceptance.ml.
2026-09-19 19:56:36 +07:00
..
2026-09-19 06:41:57 +07:00
2026-09-18 22:50:54 +07:00
2026-09-12 14:47:54 +07:00
2026-09-12 10:47:41 +07:00
2026-09-12 05:32:25 +07:00
2026-09-19 05:21:02 +07:00
2026-09-12 10:55:18 +07:00
2026-09-19 05:21:02 +07:00
2026-09-17 20:37:08 +07:00
2026-09-17 20:37:08 +07:00
2026-09-13 22:55:26 +07:00
2026-09-13 23:09:08 +07:00
2026-09-12 21:48:08 +07:00
2026-09-14 07:12:27 +07:00
2026-09-18 07:36:21 +07:00
2026-09-12 14:47:54 +07:00
2026-09-12 23:06:40 +07:00
2026-09-12 23:06:40 +07:00
2026-09-12 23:18:28 +07:00
2026-09-17 19:03:27 +07:00
2026-09-12 14:47:54 +07:00
2026-09-12 14:47:54 +07:00
2026-09-12 23:06:40 +07:00
2026-09-12 23:06:40 +07:00
2026-09-14 07:12:27 +07:00
2026-09-12 14:47:54 +07:00
2026-09-18 07:31:25 +07:00
2026-09-12 16:22:58 +07:00
2026-09-17 19:03:27 +07:00
2026-09-12 14:47:54 +07:00
2026-09-12 14:47:54 +07:00
2026-09-17 19:50:29 +07:00
2026-09-13 17:55:00 +07:00
2026-09-13 13:07:25 +07:00
2026-09-13 15:27:31 +07:00
2026-09-14 08:11:35 +07:00
2026-09-13 19:43:18 +07:00
2026-09-18 13:47:42 +07:00
2026-09-18 13:47:42 +07:00
2026-09-13 10:35:20 +07:00
2026-09-19 05:55:48 +07:00
2026-09-19 06:33:28 +07:00
2026-09-19 06:40:53 +07:00
2026-09-19 06:12:41 +07:00
2026-09-19 05:52:47 +07:00
2026-09-19 06:06:44 +07:00
2026-09-19 06:59:22 +07:00
2026-09-19 05:21:02 +07:00
2026-09-18 22:50:54 +07:00
2026-09-12 11:36:01 +07:00
2026-09-12 14:47:54 +07:00
2026-09-12 09:11:34 +07:00
2026-09-12 14:47:54 +07:00
2026-09-12 11:07:57 +07:00
2026-09-12 23:18:28 +07:00
2026-09-17 22:04:48 +07:00
2026-09-12 22:44:33 +07:00
2026-09-12 22:44:33 +07:00
2026-09-12 22:44:33 +07:00
2026-09-12 22:44:33 +07:00
2026-09-19 05:21:02 +07:00
2026-09-19 05:21:02 +07:00
2026-09-14 07:12:27 +07:00
2026-09-12 11:15:58 +07:00
2026-09-13 15:23:37 +07:00
2026-09-13 14:49:11 +07:00
2026-09-18 12:16:05 +07:00
2026-09-19 05:21:02 +07:00
2026-09-19 04:24:52 +07:00
2026-09-19 05:21:02 +07:00
2026-09-13 09:32:58 +07:00
2026-09-19 06:41:57 +07:00
2026-09-19 05:21:02 +07:00
2026-09-12 22:00:13 +07:00
2026-09-12 23:06:40 +07:00
2026-09-12 20:59:12 +07:00
2026-09-12 20:59:12 +07:00
2026-09-12 23:18:28 +07:00
2026-09-12 20:59:12 +07:00
2026-09-12 23:18:28 +07:00
2026-09-19 05:21:02 +07:00
2026-09-19 05:21:02 +07:00
2026-09-12 16:09:27 +07:00
2026-09-12 16:34:25 +07:00
2026-09-12 23:06:40 +07:00
2026-09-17 22:04:48 +07:00
2026-09-12 23:06:40 +07:00
2026-09-12 04:46:41 +07:00
2026-09-12 16:46:30 +07:00
2026-09-12 16:46:30 +07:00
2026-09-18 22:50:54 +07:00
2026-09-12 16:46:30 +07:00
2026-09-11 20:11:01 +07:00
2026-09-13 15:40:08 +07:00
2026-09-13 17:54:36 +07:00
2026-09-13 15:40:08 +07:00
2026-09-13 15:40:08 +07:00
2026-09-13 15:40:08 +07:00
2026-09-12 14:47:54 +07:00
2026-09-12 10:40:47 +07:00
2026-09-12 05:32:25 +07:00
2026-09-11 20:11:01 +07:00
2026-09-11 20:11:01 +07:00
2026-09-12 05:32:25 +07:00
2026-09-13 20:33:47 +07:00
2026-09-12 23:18:28 +07:00
2026-09-12 23:06:40 +07:00
2026-09-14 08:37:30 +07:00
2026-09-13 07:50:03 +07:00
2026-09-12 23:06:40 +07:00
2026-09-13 23:22:37 +07:00
2026-09-13 07:50:03 +07:00
2026-09-12 16:09:48 +07:00
2026-09-13 14:49:11 +07:00
2026-09-13 09:32:58 +07:00
2026-09-18 11:56:22 +07:00
2026-09-14 07:12:27 +07:00
2026-09-14 07:12:27 +07:00
2026-09-19 05:21:02 +07:00
2026-09-17 18:42:01 +07:00
2026-09-17 18:42:01 +07:00
2026-09-12 05:32:25 +07:00
2026-09-12 10:51:14 +07:00
2026-09-14 10:16:42 +07:00
2026-09-17 18:42:01 +07:00
2026-09-17 21:49:40 +07:00
2026-09-12 14:47:54 +07:00
2026-09-13 18:00:35 +07:00
2026-09-13 18:00:35 +07:00
2026-09-12 05:32:25 +07:00
2026-09-12 10:40:47 +07:00
2026-09-17 22:17:19 +07:00
2026-09-12 05:32:25 +07:00
2026-09-13 17:40:59 +07:00
2026-09-19 05:21:02 +07:00
2026-09-12 11:38:24 +07:00
2026-09-12 11:38:24 +07:00
2026-09-12 11:07:57 +07:00
2026-09-19 19:56:36 +07:00
2026-09-12 23:06:40 +07:00
2026-09-19 05:21:02 +07:00
2026-09-13 14:49:11 +07:00
2026-09-17 22:04:48 +07:00
2026-09-17 22:55:30 +07:00
2026-09-17 19:54:32 +07:00
2026-09-12 23:18:28 +07:00
2026-09-12 11:15:58 +07:00
2026-09-19 05:21:02 +07:00
2026-09-12 14:47:54 +07:00
2026-09-12 11:07:57 +07:00
2026-09-17 18:42:01 +07:00
2026-09-18 12:16:05 +07:00
2026-09-12 11:07:57 +07:00
2026-09-12 11:07:57 +07:00
2026-09-12 11:12:49 +07:00
2026-09-12 11:07:57 +07:00
2026-09-12 14:47:54 +07:00
2026-09-12 14:47:54 +07:00
2026-09-12 11:41:24 +07:00