------------------------------------------------------------------- Fri Feb 13 13:42:38 UTC 2026 - uncomfyhalomacro@opensuse.org - Update to version 0.26.0: * scripts/version: update to 0.26.0 * reduce_result: return invalid rather than NULL * eval: use ctx->id for the name of compile-time pointer targets. * Hash size for structs and unions * Replace error flag with STORAGE_ERROR * Rename internal error type to invalid * Improve some more error messages * Improve some error messages * MAINTAINERS: bgs steps down * Replace dealiasing ... with tagged union reduction * Add support for DragonFly * Improve error messages for decl attrs. * Fix order of attributes on free and netbsd. * Remove multi-binding global declarations * Disallow @packed on unions at parse time. * MAINTAINERS: Add Joe Finney * Error out on hash collisions within tagged unions * Add type_equal * Add ident_equal * Add expr_equal * Allow assignability between void and void aliases * for: give else-less loops an implicit `else void` * gen_expr: drop int cast * Give unions a default value. * gen: fix gen_expr result for for/else loops. * Remove duplicate intern_init. * Do not disallow multiple embedded _ = fields. * Implement undefined initializers * Implement break with value and for/else. * gen: extend bools for loops and asserts. * parse: add and use a try function. * parse: Allow trailing comma in binding list * check: fix multiple unpack bindings * check_expr_binding: add missing space * check_expr_for_each: fix typo and wrap * check_expr_for_each: mark default case unreachable * Reapply "Implement discarding bindings and assignment." * Revert "Implement discarding bindings and assignment." * Implement discarding bindings and assignment. * parse: further improve error msg for tuple unpacking def * check: recover from for-each binding error * Ignore flags when generating tagged union matches * Replace @offset with _: fields. * Ensure that unnamed parameters end up in the ABI. * scripts/version: upgrade to 0.25.2 * tests/06-structs.ha: add difficult sample case from stdlib * Revert replacing @offset with _: fields * tests/12-loops: fix whitespace * Dealias tuples when unpacking in for-each * Disallow all types of unnamed types in parameter lists. * Allow nameless parameters in corporeal functions. * Use _: type in function prototypes. * Fix miscellaneous gcc warnings * Remove @offset and add "_: type" struct fields. * Enable -Wformat errors for more functions * check: fix -Wformat issues with 'error' * tests/21-tuples: add offset expr tests * type_store: fix offset of zero-sized tuple members * tests/37-annotations: expand tests * tests/26-regression: re-add minimal repro for old buggy switch test * tests/14-switch: re-add pointer switch tests as fail tests * lex: fix colno with tabs * lex: fix order of xcalloc arguments * tests/12-loops: remove unnecessary heap allocation * tests/26-regression: add free after alloc * type_store: disallow error flag on done and never * check: improve yield and return errors * utf8: switch to an off-the-shelf decoder. * lex: Require identifier in #[annotation] * lex: disallow sign/whitespace in hex literal * Makefile: add -- to install command * Makefile: remove unused suffixes * types: make alignment of 64-bit types arch-dependent * Gradually remove usage of "iconst" et al * Move struct dimensions to type_store.h * check: improve error message * qinstr: remove outdated comment * gen: fix inaccurate comment * qbe: drop unused qbe_aggregate global * tests/06-structs: fix invariant tests * parse: improve empty block error message * check: improve some error messages * eval: fix typo in comment * tests/29-unarithm: add bnot tests * type_store: make a couple functions static * lex: compare strcmp to 0 instead of negating * gen: don't generate defers on assertion failure * typedef: output pointer literals. * eval: allow taking address of arbitrary expressions * lex: scan and discard #[annotations] * Save sources unaffected by -M for places using them as full paths * types: add missing newline to "Unsupported or unrecognized target" error message * parse: better error report in invalid local defines * check: don't autodereference append/insert value * check: disallow C variadism in @init/@fini/@test * check: don't do type promotion on arrays * gen: move an alloc instruction to function preamble * parse: simplify parse_binding_unpack * gen: fix expandable array gen_value type * check: use explicit false as nullability parameter * gen: handle a switch corner case * tests: test string comparison * fix regression introduced in 7c980a13 * gen: fix a regression introduced in 13a6fc7df4c4 * handle allocation failure by returning nomem * scope: remove split object init and insert functions * scan: make incomplete_decl just a field in scope_object * all: intern names & identifiers * tests: expand @symbol tests * parse: parse symbol names as string literals * parse: improve merging of consecutive string literals * gen: generalize non-C-ABI-compatible type support * check: use switch case dupe detection for enum case count * check: simplify switch case duplicate checking * check: remove switching on pointers * check: simplify switch result type reduction * check: don't allow offsetting into a slice with opaque members * gen: adapt gen_expr_binarithm for usage in gen_expr_switch * gen: handle expressions with not result better * gen: fix iterator variable intialization * gen: convert most gen_value constructions to mkgtemp + mklval * gen: separate type assertion and type test generation * gen: improve the way autoderefence generation is called * gen: remove qval_dup * gen: use better conditions for function return value checks * temporarily fix an issue with flags * check: ignore abinding flags * rt: improve compile() error reporting * check: give synthetic expressions loc information * all: sort switch cases alphabetically * all: make pointer nullability a boolean * tests: more subslicing tests * fix segmalloc failure on NetBSD * tests/09-funcs: fix OpenBSD breakage introduced in 73f794603 * typedef: cast null to pointer type * tests: update comment for rewrite of 30-reduction * check: minor fixes to error messages * rt+openbsd: write(1) returns size * rt: simplify & modernize * check: add dummy else branch to else-less if * gen: simplify branch generation * parse: Further simplify parse_binding_list() * gen: add explicit supertype parameter to gen_nested_match_tests * gen: swap type and subtype in gen_nested_match_tests * gen: use ctx->arch.ptr as appropriate in gen_literal_slice * gen: use slice helpers in gen_literal_slice_at * gen: silence a warning about not requiring "type_store.h" * Drop Lennart as OpenBSD maintainer * check: don't pass location to mkerror * tests: test some previously untaken parser codepaths * rt: drop rt::exit_status * makefiles: remove unused variable * type_store: fix type_store_lookup_alias behavior * type_store: make padding calculation explicit where required * type_store: disentangle the internal resolution functions mess * tests/30-reduction: rewrite in Hare (instead of C) * lex: generalize and export append_buffer * lex: enforce lexer->buf trailing 0 byte only where needed * lex: explicitly initialize struct lexer * check: add checked pointer autodereference function * parse: simplify and fix a leak in parse_binding_list * tests/32-copy: add slice copying tests * gen: don't extend lvalue in gen_expr_assign * qbe: use subword types in function calls and declarations * testmod: add test for uintptr enums * qbe: remove an unused global * type_store: don't capitalize never in error msg * Make const flag a no-op * fix segmalloc failure on FreeBSD * eval: disallow pointer comparison * gen: fix ... placement in C-style variadic calls * gen: fix type assertions to zero-sized types * typedef: fix literals with alias of floating type * check: only check match case assignability when hint provided * lex: handle truncation in error messages * lex: s/T_NUMBER/T_LITERAL/g * tests/00-literals: remove unused import * gen: make vaarg with zero-size type a no-op * gen: return early from gen_store with zero-size aggregate * check: disallow vaarg with undefined size type * Redefine vaarg() as vaarg(object-selector, type) * Makefile: delete unused rule * Makefile: output assembly to tmp file * util: use __has_attribute to check for format attribute * typedef: remove dead branch * types: Fix enum castability check * check: fix a spurious error * fix gen_literal_slice_at for new eval_slice * eval: literal_default: fix arrays * check: improve an error message * fix tagged_qtype for (!void | void) * parse: fix insert indexing expression error message * lex: preserve lexer->require_int through comments * eval: operate on f32s with f32 precision * eval: truncate integer literals which overflow suffix * eval: remove STORAGE_BOOL from itrunc * types: return early from struct_subtype when offset > 0 * gen: use ctx->arch.ptr for more globals * gen: only allocate word for tag in gen_match_with_tagged * gen: use hlt when result of function body is never * gen: remove unused functype field * type_store: drop unused tagged_to_union function * check: minor correction in error message * check: make check_function static * check: s/Object/Type/ * types: remove universal castability to done * Allow matching on pointers to tagged unions. * Disallow c-style variadism in hosted main. * eval: copy location over to result * check: fail when return type has undefined size * type_store: Handle check error for default values * docs: fix typo * eval: Implement slicing expressions ------------------------------------------------------------------- Thu Jul 17 15:10:36 UTC 2025 - uncomfyhalomacro@opensuse.org - Update to version 1750492315.966012b: * scripts/version: upgrade to 0.25.2 * Enable -Wformat errors for more functions * check: fix -Wformat issues with 'error' * tests/21-tuples: add offset expr tests * type_store: fix offset of zero-sized tuple members * tests/37-annotations: expand tests * tests/26-regression: re-add minimal repro for old buggy switch test * tests/14-switch: re-add pointer switch tests as fail tests * lex: fix colno with tabs * lex: fix order of xcalloc arguments * tests/12-loops: remove unnecessary heap allocation * tests/26-regression: add free after alloc * type_store: disallow error flag on done and never * check: improve yield and return errors * utf8: switch to an off-the-shelf decoder. * lex: Require identifier in #[annotation] * lex: disallow sign/whitespace in hex literal * Makefile: add -- to install command * Makefile: remove unused suffixes * types: make alignment of 64-bit types arch-dependent * Gradually remove usage of "iconst" et al * Move struct dimensions to type_store.h * check: improve error message * qinstr: remove outdated comment * gen: fix inaccurate comment * qbe: drop unused qbe_aggregate global * tests/06-structs: fix invariant tests * parse: improve empty block error message * check: improve some error messages * eval: fix typo in comment * tests/29-unarithm: add bnot tests * type_store: make a couple functions static * lex: compare strcmp to 0 instead of negating * gen: don't generate defers on assertion failure * typedef: output pointer literals. * eval: allow taking address of arbitrary expressions * lex: scan and discard #[annotations] ------------------------------------------------------------------- Sat Mar 29 16:38:01 UTC 2025 - mcepl@cepl.eu - Update to version 0.24.2+git.1742030605.75ad385: * Save sources unaffected by -M for places using them as full paths * types: add missing newline to "Unsupported or unrecognized target" error message * parse: better error report in invalid local defines * check: don't autodereference append/insert value * check: disallow C variadism in @init/@fini/@test * check: don't do type promotion on arrays * gen: move an alloc instruction to function preamble * parse: simplify parse_binding_unpack * gen: fix expandable array gen_value type * check: use explicit false as nullability parameter ------------------------------------------------------------------- Thu Feb 6 07:47:27 UTC 2025 - Guillaume GARDET - Limit %check on architectures supported by the testsuite: aarch64 riscv64 x86_64 ------------------------------------------------------------------- Tue Jul 16 14:20:43 UTC 2024 - Soc Virnyl Estela - Update to version 0.24.2: * check: Handle error expressions in offset() * Clean up includes * expr_hash: Handle STORAGE_ERROR case * check: Handle error in bindings of for-accumulator * expr_hash: Remove unnecessary alias check * Disallow casting types of undefined size * typedef: Emit struct literals * Remove unused gen_context.store * eval: Disallow auto-dereferencing * typedef: Handle values of enums with rune storage * eval: Implement slicing expressions * parse: simplify nested switch * parse: Remove unnecessary special-case from parse_if_expression * drop some "descriptive" names in generated IL * makefiles/tests.mk: make everything depend on harec * check: drop check of for_expr binding result type * gen_expr_delete: split single element/subslice cases * remove a use of *void in tests * simplify condition in identifier_eq * gen: implement gen_slice_ptrs and load_slice_data helpers * check: rewrite slice_bounds_check * eval: fix and add tests for casts from tagged unions * check: lower len(array) to a constant * gen: remove another overly verbose temporary name * remove useless line * check_expr_compound: simplify lower_implicit_cast logic * type_store: fix tuple size calculation * eval: use restrict keyword * type_store: simplify function signatures in struct initialization * test some embedded struct error cases * use arch specific sizes from ctx->arch consistently * gen: rewrite slice bounds checks * gen_expr_assign_slice: use gen_subslice_info * gen_expr_delete: use gen_subslice_info * test functions with bodies have named parameters * gen: rewrite expandable array -> slice assignment * gen: use store_slice_data instead of manual slice stores * type_store: return errors more explicitly in case of struct init errors * type_store: fix union size calculation * prohibit @packed in check, not in the parser * ast: split up slice and array atypes * ast: improve representation of array literal expandability * resolve: pass function location data into prototype check * util: simplify printing in errline() * eval: truncate bitwise not and integer unary negation results * check: improve binding assignability failure error * check: don't special case STORAGE_ERROR in check_function * check: drop pointless branch * gen: extract fixed_abort condition checks into a separate function * gen: rewrite slice and array alloc cases * check: rewrite check_expr_call * check: fix outdated comment about flexible promotion * tests: fix typo * Makefile: add uninstall target * check.c: fix up lingering issue from rename * Generate meaningful names for @init functions * Generate arbitrary names for @init functions * scripts/version: upgrade to 0.24.2 * fix some spurious errors * Allow optional parameters in variadic functions. * check: fix error location in check_expr_append_insert * 12-loops: fix scope test * implement for-each * rt::compile ensure tests fail when "invalid" Hare is valid * gen: fix implicitly void if false branch * parse: fix memory leak * eval: fix signed integer comparisons * check: remove TODO * Remove unnecessary forward declaration * lex: make comment more accurate * gen: s/strconst/strliteral/g * Makefile: recompile everything when a header changes * makefiles/tests.mk: make all tests depend on .cache/rt.td * typedef: fix some format specifiers * set TDENV when running tests * tests: rename 00-constants to 00-literals * util: ignore write errors to stderr * Check stage at which compilation failed in reject tests * tests/00-literals: s/append/static append/ * gen: fix for-each iterator with tagged union type * typedef: use const in more places * types: remove extraneous check * types: make unbounded arrays not assignable to slices * gen: remove gen_defers from gen_expr_for * main: remove unnecessary 'next' variable * mod: use string initializer instead of memcpy * parse: remove dead branch * parse: use error function for empty block error * check: fix measurement error locations * check: simplify switch exhaustivity checking * tests.mk: add missing testmod.td dependency * typedef: Remove unnecessary includings of "typedef.h" * lex: allow digit separators * Check that enums are exported if used in exported types. * Implement optional function parameters. ------------------------------------------------------------------- Sat Feb 17 00:57:51 UTC 2024 - Soc Virnyl Estela - Update to release 0.24.0: * first pre-release of harec * requires qbe 1.2 ------------------------------------------------------------------- Sat Jan 20 07:21:00 UTC 2024 - Soc Virnyl Estela - Update to version 1704220143.770566a: * gen: add column to dbgloc * Check for STORAGE_ERROR before lowering Hare vaargs * qtype: fix -Werror failures * add .builds/openbsd.yml * gen: move tagged value to first aligned offset * OpenBSD: fix tests * replace ./configure with config.mk * fix confusing wording in parse.c - Update specfile * Adopt new makefile to new configs ------------------------------------------------------------------- Sat Dec 23 08:12:46 UTC 2023 - Soc Virnyl Estela - Set version environment variable in specfile ------------------------------------------------------------------- Sat Dec 16 01:01:49 UTC 2023 - socvirnyl.estela@gmail.com - Update to version 1702179030.9d51b36: * scope: split up scope_lookup_ancestor * Implement for labels * Implement switch/match labels * check: fix enum alias importing * tests/34-declarations: add invalid symbol tests * parse: disallow empty symbol * type_store: fix tagged union segfault * all: use literal/flexible in place of constant * main: check for fmemopen error * mod: remove unnecessary allocation * tests: fix broken rejection tests * type_store: make builtin_type_error have zero size/alignment ------------------------------------------------------------------- Fri Dec 8 14:26:25 UTC 2023 - Soc Virnyl Estela - Add README-suse-maint.md ------------------------------------------------------------------- Fri Dec 08 13:19:03 UTC 2023 - socvirnyl.estela@gmail.com - Update to version 1701558776.08af325: * OpenBSD: Fix _start for arm64. ------------------------------------------------------------------- Sat Dec 02 10:16:07 UTC 2023 - socvirnyl.estela@gmail.com - Update to version 1701262234.ec3193e: * types: recover from circular dependency error * check,gen: use name instead of ident to create global_decl declarations * Revert "types: recover from circular dependency error" * types: recover from circular dependency error * type_store: pass around check context * type_store: detect duplicate fields in embedded structs/unions * check: improve error message * ast: make ast_enum_field name non-const * all: use const for more function params * scope: put type and value in a union * rt, tests: drop EXIT_FAILURE * check: resolve type when taking size/alignment * check: replace expression_measure with expression_len * check: allow taking alignment of zero-size type * parse: add error function * lex: use error func for unexpected codepoint error * check: remove unnecessary memset * parse: disallow casting to null * Move func_decl_flags from check.h to ast.h * parse: add missing va_ends * main: use xfprintf with harec -v * gen: use u32 instead of uint for tag * check: allow freeing null * qtype: fix memory leak * check: disallow append/inserting with undefined-size member * check: disallow unbounded array value in append/insert * parse: disallow ellipsis in append/insert length form * tests: make insert rejection tests consistent with append * tests: fix append/insert rejection tests * check: fix append/insert value dereferencing * parse, check: update imports * all: fix format specifiers * check: be more picky about default values of arrays * implement checkless for loops ------------------------------------------------------------------- Sat Nov 11 07:34:57 UTC 2023 - Soc Virnyl Estela - Improve specfile. Add some comments ------------------------------------------------------------------- Fri Nov 10 12:24:19 UTC 2023 - Soc Virnyl Estela - Update groups section in specfile ------------------------------------------------------------------- Fri Nov 10 06:33:21 UTC 2023 - Soc Virnyl Estela - Add install command. ------------------------------------------------------------------- Fri Nov 10 06:31:02 UTC 2023 - Soc Virnyl Estela - Dont pin version requirment on qbe ------------------------------------------------------------------- Fri Nov 10 04:12:11 UTC 2023 - socvirnyl.estela@gmail.com - Update to version 1699297758.b4dd427: * parse: improve error message * all: remove another spurious error * check: recover from errors in resolve_type * type_store: fix signed array length check * gen.c: Fix warning which lets build fail * Improve handling of invalid UTF-8 in rune/str literals * check: make error msg more accurate * Revert "convert redundant check to assert" * Add zero-size bindings * check: recover from errors in check_function ------------------------------------------------------------------- Sun Aug 20 15:04:21 UTC 2023 - Soc Virnyl Estela - Remove no-exec-stack.patch. Seems they use noexec stack already. ------------------------------------------------------------------- Sun Aug 20 14:57:42 UTC 2023 - Soc Virnyl Estela - Add no-exec-stack.patch ------------------------------------------------------------------- Sun Aug 20 14:42:43 UTC 2023 - Soc Virnyl Estela - Update to version 0+1630: * fix type promotion with STORAGE_ERROR on the right * link tests with -z noexecstack * emit line number info * identifier: use xrealloc instead of allocating new memory * lex: remove pointless _lex function * Return EXIT_SUCCESS when -h is used * types: make tagged unions castable to invalid * doc/runtime.txt: remove runtime behavior descriptions * check: disallow initializing object with undefined size * check: disallow assigning to object with undefined size * Revert nested defers * Remove cap built-in * Remove accidentally added test * check: handle errors without (ab)using type hints * Revert "Implement new hosted environment requirements" * Allow top-level static assertions * Remove unary + * check: disallow @symbol alongside other attributes * check: disallow @init, @fini, and @test on prototypes * Implement new hosted environment requirements * docs: document NO_COLOR and HAREC_COLOR * rt: pass raw compile flags to harec * Make pointer/slice assignability rules more strict * check: add implicit yield at end of compound expr * Remove implicit const flag from function decls * Remove cursed bool test * check: show visual marker for all errors * lex: add static assertion for tokens array length * eval: fix abort when evaluating measure expr on ERROR * Add cap builtin * check: always perform result reduction on if expr * parse: allow return and yield in more places * tests: remove magic exit status from 09-funcs * check: remove ctx->deferring * check, gen: allow nested defers * check: remove unnecessary defer check * check: disallow jumping out of defer * parse: fix import name list parsing * Link with libm ------------------------------------------------------------------- Sun Aug 13 13:26:58 UTC 2023 - Soc Virnyl Estela - Replace obsoleted `disabled` option with `manual` ------------------------------------------------------------------- Sat Jul 22 14:21:45 UTC 2023 - Soc Virnyl Estela - Update to 0+1591: * qbe: make offset field int64_t instead of long [f16e979] - Sebastian * all: replace intmax_t with int64_t [18a73fb] - Sebastian * drop expression parameter from error_norec [c1259f6] - Ember Sawady * type_dealias: resolve incomplete aliases [506bd08] - Ember Sawady * thread check context into type_dealias [8b17997] - Ember Sawady * get rid of yet another spurious error [618f28b] - Ember Sawady * type store: s/uint/u32/ for tagged union tags [c2e1ec3] - Ember Sawady * avoid segfault on return with invalid parameters [0424adb] - Ember Sawady * extend sub-word types before relevant bin/unarithms [f5da14c] - Ember Sawady * Get rid of more spurious errors [89133d4] - Ember Sawady * Rewrite malloc [7a27d96] - Ember Sawady * rt: fix typo [174aef4] - Sebastian * Add harec -v [a66a324] - Ember Sawady * lex: make E and P in literals case-insensitive [efc9cc3] - Ember Sawady * rt+freebsd: _start: don't touch first arg [d8db334] - Ember Sawady * Emit an abort at the end of @noreturn functions [22e4ade] - Ember Sawady * emit precise hexadecimal floats in typedef.c [8ea475e] - Bor Grošelj Simić * implement hex float literals [0c77e6a] - Bor Grošelj Simić * check: lower the failing case of ! to default match case [2ac0c5f] - Bor Grošelj Simić * gen: utilize qbe's new hlt instruction [209ca85] - Bor Grošelj Simić * Add missing comma in abort reasons [4718e74] - Ember Sawady * gen: put all rt functions into a struct [609c0ca] - Bor Grošelj Simić * check: no default value for enums without zero value [9b4c417] - Sebastian * check: disallow autofilling fields without default values [189dfc9] - Sebastian * gen: remove some obsolete utility functions [8917e4a] - Bor Grošelj Simić * expr_propagate: make "error occured" a fixed abort [9632c11] - Bor Grošelj Simić * allow assert/abort with non-constant message [f4ab18a] - Bor Grošelj Simić * check: handle static assertions without passing them on [186f301] - Bor Grošelj Simić * add a utility function for constant string exprs [d7231f6] - Bor Grošelj Simić * all: add xfprintf function which exits for I/O errors [db642ac] - Sebastian * Permit C-style variadism with no named params [cbe828e] - Sebastian * docs/runtime.txt: document recently added fixed abort reason [16aa2bb] - Bor Grošelj Simić * expr.h: remove unused struct expression_propagate [6afa5af] - Bor Grošelj Simić * all: correct xcalloc argument order [b092fc5] - Sebastian * Refactor typedef environment variables [dfc1dd1] - Ember Sawady * eval_measurement: implement len for arrays [f12153b] - Umar Getagazov * Allow empty -N option arg [9c4c5c7] - Autumn! * error: Align located messages with other toolchains [7f5eb3f] - Dridi Boukelmoune * Remove _ from function parameters. [01cb763] - Joe Finney * Loosen uintptr promotion rules [9bf57f6] - Ember Sawady * Drop HA_STAGE [72c917b] - Ember Sawady * Remove char [3dfde59] - Sebastian * Abort instead of SEGFAULT when slice alloc cap < length [a3b22ca] - Autumn! * ensure operands and operators match in special assignment expressions [151a0a2] - Bor Grošelj Simić * check: extract binop validity checking into a separate function [36868d0] - Bor Grošelj Simić * Add more binarithms tests [aaf2c2f] - Sebastian * eval: fix signed binarithm operations [76bf2d6] - Sebastian * gen: correctly copy first member in expandable arrays [d436570] - Bor Grošelj Simić ------------------------------------------------------------------- Sat May 27 13:05:16 UTC 2023 - Soc Virnyl Estela - Update to 0+1562: * all: add xfprintf function which exits for I/O errors * permit C-style variadism with no named params * docs/runtime.txt: document recently added fixed abort reason * expr.h: remove unused struct expression_propagate * all: correct xcalloc argument order * Refactor typedef environment variables * eval_measurement: implement len for arrays * allow empty -N option arg * error: align located messages with other toolchains * Remove _ from function parameters. ------------------------------------------------------------------- Sat Mar 11 11:29:55 UTC 2023 - Soc Virnyl Estela - Enable test suite ------------------------------------------------------------------- Tue Feb 28 23:50:54 UTC 2023 - Soc Virnyl Estela - Initial spec for harec 0+git1514