blob: 6ec3f49b9782918fe4833921544f45bdb1fe3f7d [file]
2026-11-08 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-prelude.cc (gnu_moids): New function.
(stand_prelude): Move extended moids definition to gnu_moids.
(gnu_prelude): Load Algol 68 parts from gnu.a68.
Call gnu_moids.
* a68-imports.cc (SET_MOID): Define.
(complete_encoded_mode): Use SET_MOID.
2026-11-08 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-moids-check.cc (find_operator): Fix handling of
standard pow operators.
2026-11-08 Jose E. Marchesi <jemarch@gnu.org>
* a68.h: Add prototypes for a68_lower_wordenint2 and
a68_lower_wordenreal2.
* a68-parser-prelude.cc (gnu_prelude): Define WORDEN for SIZETY
int, SIZETY real and SIZETY bits.
* a68-low-prelude.cc (a68_lower_wordenint2): New function.
(a68_lower_wordenreal2): Likewise.
2026-11-08 Jose E. Marchesi <jemarch@gnu.org>
* a68-imports.cc (a68_open_packet): Set better error message in
case of decod error.
2026-11-08 Jose E. Marchesi <jemarch@gnu.org>
* ga68-exports.pk (ga68_mode_64): kind can be GA68_MODE_BOOL.
(ga68_mode_32): Likewise.
2026-11-06 Jose E. Marchesi <jemarch@gnu.org>
* a68-moids-misc.cc (a68_widens_to): Add two missing indirect
widening paths.
2026-10-29 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-moids-check.cc (find_operator): Do not apply shortcut
for cross real/int definitions to exponentiation.
2026-10-26 James LeBlanc <jpl.algol68@gmail.com>
Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-prelude.cc (stand_prelude): Do not declare compl
operators, as these are now defined in standard.a68.
2026-10-23 Jose E. Marchesi <jemarch@gnu.org>
* a68-lang.cc (a68_post_options): Fix typo in comment.
2026-10-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-lang.cc (a68_post_options): Fix diagnostic format.
2026-10-21 Jose E. Marchesi <jemarch@gnu.org>
* ga68.vw: Add syntax for nested pragmats.
* ga68.texi (Dialect options): Document that -fbrackets can only
be used in upper storpping.
* a68-parser-scanner.cc (skip_pragmat): Likewise.
(next_preprocessor_item): Likewise.
(pragment): Likewise.
(get_next_token): Likewise.
(tokenise_source): Likewise.
* a68-parser-pragmat.cc (handle_access_in_pragmat): Handle nested
pragmats.
(handle_pragmat): Likewise.
* a68-parser-keywords.cc (a68_set_up_tables): Add symbols for
BOLD_PRAGMAT_SYMBOL and STYLE_I_PRAGMAT_SYMBOL in both upper and
supper stropping.
* a68-parser-attrs.def (BOLD_PRAGMAT_BEGIN_SYMBOL): New AST
attribute.
(BOLD_PRAGMAT_END_SYMBOL): Likewise.
(STYLE_I_PRAGMAT_BEGIN_SYMBOL): Likewise.
(STYLE_I_PRAGMAT_END_SYMBOL): Likewise.
* a68-lang.cc (a68_post_options): -fbrackets is not compatible
with supper stropping.
2026-10-18 Jose E. Marchesi <jemarch@gnu.org>
PR algol68/127977
* a68-low.cc (a68_low_assignation): Compare types using
TYPE_CANONICAL.
* a68-low-moids.cc (lower_proc_mode): Do not
SET_TYPE_STRUCTURAL_EQUALITY.
(lower_union_mode): Likewise.
2026-10-17 Jose E. Marchesi <jemarch@gnu.org>
* a68-lang.cc (a68_build_a68_type_nodes): Define fixed sized modes
in terms of standard types.
* a68-low-reals.cc (a68_real_pow): Dispatch builtins based on type
equality rather than precision.
(a68_real_round): Likewise.
(a68_real_entier): Likewise.
2026-10-11 Jose E. Marchesi <jemarch@gnu.org>
PR algol68/127797
* a68-low-reals.cc (a68_real_pow): Fix selection of pow builtin.
2026-10-11 Jose E. Marchesi <jemarch@gnu.org>
* a68-lang.cc (a68_build_a68_type_nodes): Remove spurious assignment.
2026-10-08 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-reals.cc (a68_real_entier): Fix for non 64-bit targets.
(a68_real_round): Likewise.
(a68_real_pow): Likewise.
2026-10-04 Jose E. Marchesi <jemarch@gnu.org>
* ga68.texi (Extended environment enquiries): Document environment
enquiries related to word sized modes.
(Extended standard modes): New section.
(Extended integral operators): Likewise.
(Extended real operators): Likewise.
2026-10-04 Jose E. Marchesi <jemarch@gnu.org>
* a68-imports.cc (complete_encoded_mode): Handle word sized modes.
2026-10-04 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-prelude.cc (stand_prelude): Add definitions for
shortmaxbits and shortshortmaxbits.
(gnu_prelude): Add new standard definitions for fixed sized modes.
* a68-low-prelude.cc (a68_lower_tan): New function.
(a68_lower_long_sin): Likewise.
(a68_lower_long_long_cos): Likewise.
(a68_lower_asin): Likewise.
(a68_lower_long_atan): Likewise.
(a68_lower_long_long_ln): Likewise.
(a68_lower_exp): Likewise.
(a68_lower_longreali): Likewise.
* a68.h: Add prototype for a68_lower_wordbitswidth.
2026-10-04 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-bits.cc (a68_get_bits_skip_tree): Handle fixed
sized modes.
* a68-low-prelude.cc (a68_lower_wordbitswidth): New function.
(a68_lower_wordreali): Likewise.
(a68_lower_wordinti): Likewise.
* a68-low-units.cc (a68_lower_denotation): Likewise.
* a68-low-reals.cc (a68_real_pow): Likewise.
(a68_real_round): Likewise.
(a68_real_entier): Likewise.
(a68_get_real_skip_tree): Likewise.
* a68-low-moids.cc (lower_standard_mode): Likewise.
* a68-low-ints.cc (a68_get_int_skip_tree): Likewise.
* a68-low-decls.cc: Likewise.
* a68-low-complex.cc (a68_complex_widen_from_real): Likewise.
* a68-low-coercions.cc: Likewise.
(a68_lower_widening): Likewise.
2026-10-04 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-attrs.def (FIXETY): New attribute.
(WORD_SYMBOL): Likewise.
* a68.h (a68_word_bits_type): Define.
(a68_word_bytes_type): Likewise.
(a68_word_int_type): Likewise.
(a68_word_real_type): Likewise.
* a68-types.h (enum a68_tree_index): Add enumerated values
A68_WORD_{INT,BITS,BYTES,REAL}_TYPE.
* a68-lang.cc (a68_build_a68_type_nodes): Initialize
a68_word_{int,bits,bytes,real}_type.
(a68_type_for_mode): Handle a68_word_{int,bits,bytes,real}_type.
* a68-moids-misc.cc (a68_is_transput_mode): Handle fixed sized
modes.
(a68_widens_to): Likewise.
* a68-moids-to-string.cc (moid_to_string_2): Likewise.
* a68-parser-bottom-up.cc (reduce_declarers): Reduce fixetys.
(reduce_primary_parts): Likewise.
* a68-parser-keywords.cc (a68_set_up_tables): Add keyword for
WORD_SYMBOL.
* a68-parser-modes.cc (count_sizety): Handle sizetys.
(get_mode_from_declarer): Likewise.
(get_mode_from_denotation): Likewise.
* a68-parser-victal.cc (victal_check_declarer): Likewise.
(compute_derived_modes): Resolve equivalences in M_WORD_* standard
modes.
* a68-parser-moids-check.cc (find_operator): Handle fixed sized
modes.
* a68-parser-prelude.cc (stand_moids): Build standard fixed sized
modes and operators.
2026-10-04 Jose E. Marchesi <jemarch@gnu.org>
* ga68.vw (12D): Add meta-alternative for word.
(81A): Likewise.
(65C): Add meta-alternative for WORD.
(65H): New metaproduction rule.
(82o): New hyper-rule.
(94d): New word symbol.
2026-10-01 Pietro Monteiro <pietro@sociotechnical.xyz>
* ga68.texi (Comments and pragmats): Correct description of
nestable comments on UPPER stropping and fix example code.
2026-09-27 Cupertino Miranda <cupertinomiranda@gmail.com>
* a68-lang.cc (a68_init): Anticipate the execution of
a68_init_ranges.
(get_global_context): Removed function.
(pushdecl): Replace call to get_global_context by
a68_range_context.
* a68.h: Remove A68_GLOBAL_CONTEXT macro.
2026-09-27 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-moids.cc (build_stub_type_decl): Remove function.
(lower_struct_mode): Do not call build_stub_type_decl.
(lower_union_mode): Likewise.
2026-09-25 Jose E. Marchesi <jemarch@gnu.org>
* a68-types.h (struct TAG_T): Add field ctyp.
* a68-parser.cc (a68_new_tag): Initialize CTYPE.
* a68-low-decls.cc (fish_declarer_from_tree): New function.
(grok_typedef_in_decl): Likewise.
(a68_lower_mode_declaration): Install typedef variant type for a
defining-indicant in the symtab.
(a68_lower_variable_declaration): Call grok_typedef_in_decl.
(a68_lower_identity_declaration): Likewise.
* a68-low-ranges.cc (a68_pop_serial_clause_range): Compare main
variant types in sanity check at block exit.
* a68-low.cc (a68_low_assignation): Likewise in assignation.
2026-09-25 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-bits.cc: Use front-end type nodes consistently.
* a68-low-bools.cc: Likewise.
* a68-low-chars.cc: Likewise.
* a68-low-clauses.cc: Likewise.
* a68-low-ints.cc: Likewise.
* a68-low-multiples.cc: Likewise.
* a68-low-prelude.cc: Likewise.
* a68-low-reals.cc: Likewise.
* a68-low-unions.cc: Likewise.
* a68-low-units.cc: Likewise.
* a68-low.cc: Likewise.
2026-09-25 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-decls.cc (a68_lower_mode_declaration): Use
a68_add_global_decl for mode declarations in public ranges.
2026-09-25 Jose E. Marchesi <jemarch@gnu.org>
* a68.h: Add prototypes for a68_add_global_decl and
a68_global_context.
* a68-low-ranges.cc (a68_add_global_decl): New function.
(a68_global_context): Likewise.
2026-09-24 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-moids-equivalence.cc (are_modes_equivalent): Do not
string-compare INDICANTs.
2026-09-22 Jose E. Marchesi <jemarch@gnu.org>
* a68-low.cc (lower_module_text): Mark prelude_decl an
postlude_decl as artificial.
2026-09-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-modes.cc (a68_resolve_equivalent): Rename from
resolve_equivalent and made global.
(resolve_eq_members): Adapt calls to resolve_equivalent
accordingly.
(resolve_eq_tags): Likewise.
(bind_modes): Likewise.
(compute_derived_modes): Likewise.
* a68.h: Add prototype for a68_resolve_equivalent.
* a68-parser-extract.cc (a68_extract_revelation): Resolve
equivalences in imported modes.
2026-09-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-attrs.def (COMPLEX_SYMBOL): Remove.
* a68-parser-bottom-up.cc (reduce_declarers): Remove reduction of
COMPLEX_SYMBOL.
(reduce_declarers): Do not handle COMPLEX_SYMBOL.
* a68-parser.cc (a68_dont_mark_here): Likewise.
2026-09-20 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-units.cc (a68_lower_denotation): strtoul can return
errno /= 0 in overflow.
2026-09-19 Jose E. Marchesi <jemarch@gnu.org>
* ga68.vw: Typos fixed, section 8.0.1 added, consistent {x} style
to refer to rules within pragmatics.
2026-09-19 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-sprops.cc (make_origin): Initialize properties of the
new origin from a parse node.
(sprops_for_denotation): Pass parse node to make_origin and remove
now superfluous code.
(sprops_for_deproceduring): Likewise.
(sprops_for_proceduring): Likewise.
(sprops_for_loop_clause): Likewise.
(sprops_for_serial_clause): Likewise.
(sprops_for_parallel_clause): Likewise.
(sprops_for_conditional_clause): Likewise.
(sprops_for_case_clause): Likewise.
(sprops_for_collateral_clause): Likewise.
(sprops_for_conformity_clause): Likewise.
(sprops_for_identity_relation): Likewise.
(sprops_for_logical_function): Likewise.
(sprops_for_call): Likewise.
(sprops_for_generator): Likewise.
(sprops_for_formula): Likewise.
(sprops_for_applied_identifier): Likewise.
(sprops_for_assertion): Likewise.
(sprops_for_decl): Likewise.
(sprops_for_unit): Likewise.
2026-09-19 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-sprops.cc (sprops_for_deproceduring): Set BNO.
(sprops_for_proceduring): Likewise.
(sprops_for_loop_clause): Likewise.
(sprops_for_serial_clause): Likewise.
(sprops_for_parallel_clause): Likewise.
(sprops_for_conditional_clause): Likewise.
(sprops_for_case_clause): Likewise.
(sprops_for_collateral_clause): Likewise.
(sprops_for_conformity_clause): Likewise.
(sprops_for_identity_relation): Likewise.
(sprops_for_logical_function): Likewise.
(sprops_for_call): Likewise.
(sprops_for_generator): Likewise.
(sprops_for_formula): Likewise.
(sprops_for_assertion): Likewise.
(sprops_for_decl): Likewise.
(sprops_for_decl): Likewise.
(sprops_for_unit): Likewise.
2026-09-19 Jose E. Marchesi <jemarch@gnu.org>
* a68-types.h: Clarify roles of field set by the scope checker in
TAG_T.
2026-09-19 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-scope.cc: Do not claim the scope pass finishes the
parser.
2026-09-18 Jose E. Marchesi <jemarch@gnu.org>
* a68.h: Add prototypes for a68_sprops, a68_yields_value and
a68_is_declaration.
* a68-types.h (a68_access): New type.
(a68_kindo): Likewise.
(ORIGIN_T): Likewise.
(ACCESS_T): Likewise.
(NODE_T): Add fields origin and access.
(TAG_T): Likewise.
(ACCESS_NIHIL): Remove.
(ACCESS_CONSTANT): Likewise.
(ACCESS_DIRIDEN): Likewise.
(ACCESS_INDIDEN): Likewise.
(ACCESS_DIRWOST): Likewise.
(DEFLEX): Likewise.
(FLEXO): Likewise.
(BNO): Define.
(DEFLEX): Likewise.
(DIAGO): Likewise.
* a68-parser-sprops.cc: New file.
* a68-parser-attrs.def: New comment.
* a68-parser-bottom-up.cc (reduce_enquiry_clauses): Add a few
comments to improve readability.
* a68-parser.cc (a68_is_declaration): New function.
(a68_yields_value): Likewise.
(a68_parser): Run the sprops pass.
(a68_new_node): Initialize ORIGIN and ACCESS.
(a68_new_tag): Likewise, for tags.
* Make-lang.in (ALGOL68_OBJS): Build algol68/a68-parser-sprops.o.
* a68-parser-debug.cc (a68_dump_parse_tree_1): Show static
properties whenever requested.
* a68-low-clauses.cc: Fix grammar for initialiser series and
closed clause in comments.
* a68-low.cc (a68_low_assignation): Fix comment.
2026-09-16 Pietro Monteiro <pietro@sociotechnical.xyz>
* a68-parser.cc (a68_get_node_location): Return a location
that covers the whole span of the node.
2026-09-16 Pietro Monteiro <pietro@sociotechnical.xyz>
* a68-low-bits.cc (a68_bits_elem): Use LINE_NUMBER (p) instead
of NUMBER (LINE (INFO (p))).
* a68-low-chars.cc (a68_char_repr): Likewise.
* a68-low-coercions.cc (a68_lower_uniting): Likewise.
* a68-low-misc.cc (a68_lower_assertion): Likewise.
* a68-low-multiples.cc (a68_multiple_slice): Likewise.
(a68_multiple_single_bound_check): Likewise.
(a68_boundable_dim_check): Likewise.
(a68_multiple_bounds_check): Likewise.
(a68_multiple_bounds_check_equal): Likewise.
* a68-low.cc (a68_checked_indirect_ref): Likewise.
* a68-parser-scanner.cc (new_source_line): Adjust the fields
when creating a LINE_T.
(append_source_line): Add a location_t to the new line.
(append_environ): Track the locations of pre/post-lude.
(read_source_file): Create a linemap for the source file.
(include_files): Create a linemap for included source files.
* a68-parser-top-down.cc (a68_phrase_to_text): Use unsigned
for line numbers.
* a68-parser.cc (a68_get_node_location): Return the location of
the node info line.
(a68_get_line_location): Return the location of the line.
* a68-pretty-print.h (a68_line_format_token): Use the line's
filename to check if it's part of the standard environment.
* a68-types.h (struct LINE_T): Remove filename and number
fields from LINE_T and add location.
(FILENAME): Delete macro.
(LOCATION): New macro.
(LINE_NUMBER): Adjust to use LINE_NO (line).
* a68.h (FILENAME): New function.
(LINE_NO): Likewise.
2026-09-16 Pietro Monteiro <pietro@sociotechnical.xyz>
* a68-parser-scanner.cc (concatenate_lines): Delete.
(read_source_file): Stop calling concatenate_lines.
(next_char): Skip backslash at the end of lines.
(include_files): Stop calling concatenate_lines.
2026-09-10 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-ranges.cc (a68_pop_range): Do not consolidate refs in
last unit in the range's statement list, becuase it has already
been consolidated.
(a68_add_completer): Just call to a68_consolidate_ref and avoid
tsi_delink.
(a68_pop_serial_clause_range): Likewise.
* a68-low-clauses.cc (a68_lower_labeled_unit): Consolidate ref in
second componend of compound expr.
* a68-low.cc (a68_consolidate_ref): Simplify and do not handle
compound expressions in a special way.
2026-07-20 Jose E. Marchesi <jemarch@gnu.org>
PR algol68/126330
* a68-low-chars.cc (a68_char_max): abscharmax is an int, not a
char.
2026-07-16 Jose E. Marchesi <jemarch@gnu.org>
* ga68.texi (POSIX files): Fix typo.
2026-07-14 Jose E. Marchesi <jemarch@gnu.org>
* ga68-coding-guidelines.texi (Conditional clauses): Fix typo
if-parts -> else-parts.
2026-07-05 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-units.cc (a68_lower_denotation): Check for denotations
too big for bits modes.
2026-07-05 Jose E. Marchesi <jemarch@gnu.org>
* ga68.vw: Add syntax for the GNU68-2026-003-decimal-radices
language extension.
* a68-parser-scanner.cc (get_next_token): Recognize decimal bits
denotations.
(get_next_token): Emit an error if an invalid radix is found in a
bits denotation.
2026-06-24 Jose E. Marchesi <jemarch@gnu.org>
* a68-moids-sorting.cc (packs_ordering): Do not rely on pointer
comparison when comparing pack element names.
2026-06-24 Jose E. Marchesi <jemarch@gnu.org>
* a68-imports.cc (complete_encoded_mode): Fix comment on ordering
of union packs entries.
2026-06-22 Kanishka Solanki <kanishkasolanki456s@gmail.com>
* a68-lang.cc (a68_get_alias_set): New function.
(LANG_HOOKS_GET_ALIAS_SET): Define to a68_get_alias_set.
2026-06-19 Kanishka Solanki <kanishkasolanki456s@gmail.com>
* a68-low-clauses.cc (a68_lower_collateral_clause): Do not check
for rows before calling a68_low_dup.
* a68-low-units.cc (collect_call_arguments): Likewise.
2026-06-16 Jose E. Marchesi <jemarch@gnu.org>
* a68-imports.cc (a68_replace_equivalent_mode): Get a moif and
check extracts.
(a68_open_packet): Fix deduplication of in-moif modes and move
extract replacement code to a68_replace_equivalent_mode.
* a68-low-moids.cc (a68_lower_moids): Check that all known modes
have an associated ctype as part of the sanity checks.
2026-06-16 Gerald Pfeifer <gerald@pfeifer.com>
* README: Avoid redirect for web link to Algol 68 Jargon File.
* ga68-coding-guidelines.texi (Top): Ditto.
2026-06-15 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-taxes.cc (attr_descr): New function.
(already_declared): Use attr_descr for diagnostic.
(already_declared_hidden): Likewise.
2026-06-15 Jose E. Marchesi <jemarch@gnu.org>
* a68-imports.cc (INCLUDE_VECTOR): Define.
(a68_open_packet): Deduplicate within-moif modes while importing.
2026-06-15 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-extract.cc (a68_extract_indicants): Set PUBLICIZED in
the new tags for mode indicants.
* a68-parser.cc (a68_new_tag): Initialize PUBLICIZED to false.
2026-06-14 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-brackets.cc (INCLUDE_STRING): Define.
Do not include <string.
* a68-parser-bottom-up.cc (INCLUDE_STRING): Define.
Do not include <string>.
* a68-moids-diagnostics.cc (INCLUDE_STRING): Define.
Do not include <string>.
* a68-imports.cc (INCLUDE_STRING): Define.
Do not include <string>.
* a68-imports-archive.cc (INCLUDE_MAP): Define.
(INCLUDE_STRING): Likewise.
Do not include <string> nor <map>.
2026-06-14 Jose E. Marchesi <jemarch@gnu.org>
* a68-imports.cc (struct encoded_mode): Type of flex.sub_offset
shall be uint64_t.
2026-06-14 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-brackets.cc (bracket_check_error): Escape %< and
%> in call to printf.
2026-06-13 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-brackets.cc: Include <string>.
(bracket_check_error): Get additional argument `item'.
(bracket_check_diagnose): Likewise.
(bracket_check_parse): Fix call to a68_error passing the `item'.
2026-06-13 Jose E. Marchesi <jemarch@gnu.org>
* a68-low.cc (a68_demangle_symbol): Fix typo, 'p' is the mangling
of '%', not of '+'.
2026-06-13 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-generator.cc (a68_low_generator): Wrap the resulting
stmt_list into a nop_expr.
2026-06-13 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-clauses.cc (a68_lower_collateral_clause): Check that
a68_lower_tree on the units list return NULL_TREE.
2026-06-13 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-units.cc (a68_lower_formula): Consolidate operands of
formula before call.
(a68_lower_monadic_formula): Likewise.
2026-06-12 Pietro Monteiro <pietro@sociotechnical.xyz>
* a68-imports.cc (a68_try_suffixes): Use .dylib suffix on Darwin.
Use .dll suffix and optional lib prefix on Windows.
2026-06-08 Jose E. Marchesi <jemarch@gnu.org>
* a68-pretty-print.h (a68_attr_format_token): Get diagnostic
string from a68_attribute_name.
2026-06-03 Jose E. Marchesi <jemarch@gnu.org>
* ga68.texi (Worthy characters): Remove spurious @ entry in the
list of worthy characters.
2026-06-03 Jose E. Marchesi <jemarch@gnu.org>
* ga68.vw (Modes and nests): Incorporate syntax from the RR
chapter 7.
2026-06-03 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-bottom-up.cc (recover_from_error): Use the output of
a68_phrase_to_text as format string so format tags are honored.
2026-06-02 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-modes.cc (WELL): Define.
(NO_YIN): Likewise.
(NO_YANG): Likewise.
(UNWELL): Likewise.
(is_well_formed): Discriminate reason for the given mode to not be
well formed.
(a68_make_moid_list): Emit note explaining why a mode is not well
formed.
2026-05-30 Dhruv Chawla <dhruvc@nvidia.com>
* a68-imports-archive.cc (struct Archive_fl_header): Fix typos.
* a68-imports.cc (encoded_mode_free): Likewise.
* a68-low-chars.cc (a68_char_repr): Likewise.
* a68-low-clauses.cc (a68_lower_label): Likewise.
(a68_lower_labeled_unit): Likewise.
(a68_lower_completer): Likewise.
(a68_lower_initialiser_series): Likewise.
(a68_lower_case_clause): Likewise.
* a68-low-decls.cc (a68_lower_variable_declaration): Likewise.
(a68_lower_procedure_variable_declaration): Likewise.
* a68-low-ints.cc (a68_get_int_skip_tree): Likewise.
(a68_int_maxval): Likewise.
* a68-low-moids.cc (lower_struct_mode): Likewise.
* a68-low-multiples.cc (a68_multiple_single_bound_check): Likewise.
* a68-low-prelude.cc (a68_lower_divab3): Likewise.
(a68_lower_upb3): Likewise.
(a68_lower_lwb3): Likewise.
* a68-low-procs.cc (a68_get_proc_skip_tree): Likewise.
* a68-low-reals.cc (a68_real_maxval): Likewise.
(a68_real_minval): Likewise.
* a68-low-units.cc (a68_lower_identifier): Likewise.
* a68-low.cc (a68_low_assignation): Likewise.
* a68-moids-misc.cc (a68_is_firm): Likewise.
(a68_is_coercible_series): Likewise.
* a68-parser-bottom-up.cc (strange_separator): Likewise.
(a68_bottom_up_parser): Likewise.
* a68-parser-prelude.cc (stand_prelude): Likewise.
* a68-parser-scanner.cc (a68_lexical_analyser): Likewise.
* a68-parser-scope.cc (a68_scope_checker): Likewise.
* a68-parser-serial-dsa.cc (serial_dsa_check_serial_clause): Likewise.
* a68-parser-taxes.cc (test_firmly_related_ops_local): Likewise.
* a68-parser.cc: Likewise.
* a68-types.h (struct KEYWORD_T): Likewise.
(struct OPTIONS_T): Likewise.
(struct NODE_T): Likewise.
(struct MODE_CACHE_T): Likewise.
* ga68-coding-guidelines.texi: Likewise.
* ga68.texi: Likewise.
2026-05-24 Peter Damianov <peter0x44@disroot.org>
* a68-lang.cc (a68_handle_option): Open file in binary mode.
* a68-parser-scanner.cc (read_source_file): Open file in binary mode.
(include_files): Likewise.
2026-05-20 Pietro Monteiro <pietro@sociotechnical.xyz>
* a68-parser-prelude.cc (gnu_prelude): Map FLOOR(L real):L int
to ENTIER(L real):L int.
* ga68.texi: Add a section for real operators in the Extended
prelude chapter and document FLOOR.
2026-05-10 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-taxes.cc (is_mappable_routine): Remove handling of
non-implemented math functions.
2026-05-01 Peter Damianov <peter0x44@disroot.org>
* Make-lang.in: Correct typo exeect -> exeext
2026-04-22 Thiago Jung Bauermann <thiago.bauermann@linaro.org>
* Make-lang.in (algol68.install-html): Fix
ga68-coding-guidelines dependency. Install all dependencies.
2026-03-23 Jose E. Marchesi <jemarch@gnu.org>
* ga68-coding-guidelines.texi (Comments): Fix typo.
2026-03-14 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-strings.cc (a68_string_mult): Adjust to RR semantics for
negative or zero factor argument.
* ga68.texi (String operators): Adjust documentation accordingly.
2026-03-08 Jose E. Marchesi <jemarch@gnu.org>
PR algol68/124372
* a68-low-units.cc (a68_lower_denotation): Call to strtoull if
INT64_T_IS_LONG is not defined, strtol otherwise.
* a68-parser-scanner.cc (get_next_token): Use strtoul for radix
instead of strtol.
2026-03-05 Jose E. Marchesi <jemarch@gnu.org>
PR algol68/124322
* a68-low-holes.cc (a68_wrap_formal_proc_hole): Wrap functions
returning void properly.
2026-02-27 James Bohl <bohlj47@gmail.com>
* a68-low-prelude.cc (a68_lower_negate2): Annotate denotation
as being negated.
* a68-low-units.cc (a68_lower_denotation): Allow the full range
of negative values if the denotation is negated.
* a68-types.h (struct NODE_T): Add negated field.
(NEGATED): Define.
* a68-parser.cc (a68_new_node): Initialize NEGATED.
2026-02-26 James Bohl <bohlj47@gmail.com>
* a68-low-units.cc (a68_lower_denotation): Add error on
integral denotation overflow.
2026-02-25 Jose E. Marchesi <jemarch@gnu.org>
* a68-imports-archive.cc (Archive_file): Handle Darwin #1/NN
archive members.
2026-02-25 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-units.cc (lower_subscript_for_trimmers): Do not revise
bounds if no trimscript.
2026-02-23 Jose E. Marchesi <jemarch@gnu.org>
* a68.h: Remove prototypes for *_width functions.
* a68-parser-prelude.cc (stand_prelude): Do not define *width
functions.
* a68-low-ints.cc (a68_int_width): Remove.
* a68-low-reals.cc (a68_real_width): Likewise.
(a68_real_exp_width): Likewise.
* a68-low-prelude.cc (a68_lower_longintwidth): Likewise.
(a68_lower_intwidth): Likewise.
(a68_lower_longlongintwidth): Likewise.
(a68_lower_shortintwidth): Likewise.
(a68_lower_shortshortintwidth): Likewise.
(a68_lower_realwidth): Likewise.
(a68_lower_longrealwidth): Likewise.
(a68_lower_longlongrealwidth): Likewise.
(a68_lower_expwidth): Likewise.
(a68_lower_longexpwidth): Likewise.
(a68_lower_longlongexpwidth): Likewise.
2026-02-22 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-units.cc (lower_subscript_for_trimmers): Do not crash
with trimmers with implicit lower and upper bounds.
2026-02-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-bottom-up.cc (reduce_formal_holes): Fix error format
tag.
* a68-parser-taxes.cc (test_firmly_related_ops_local): Likewise.
(already_declared_hidden): Likewise.
2026-02-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-imports-archive.cc (Archive_file::initialize_big_archive):
Fix formatting tag in call to a68_error.
2026-02-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-moids-diagnostics.cc (a68_mode_error_text): Properly escape
%< and %> in snprintf calls.
2026-02-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-pretty-print.h: New file.
* a68.h: Mark prototypes of diagnostic functions with
ATTRIBUTE_A68_DIAG.
* a68-diagnostics.cc (diagnostic): Do not translate upper-case
tags and pass a copy of the va_list `args' to diagnostic_set_info.
Mark with ATTRIBUTE_A68_DIAG.
* a68-imports-archive.cc: Convert to use standard error format
tags.
* a68-parser-victal.cc: Likewise.
* a68-parser-top-down.cc: Likewise.
* a68-parser-taxes.cc: Likewise.
* a68-parser-scanner.cc: Likeise.
* a68-parser-moids-check.cc: Likewise.
* a68-parser-modes.cc: Likewise.
* a68-parser-extract.cc: Likewise.
* a68-parser-pragmat.cc: Likewise.
* a68-parser-scope.cc: Likewise.
* a68-parser-brackets.cc: Likewise.
* a68-parser-bottom-up.cc: LIkewise.
* a68-moids-diagnostics.cc: Likewise.
* a68-imports.cc: Likewise.
2026-02-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-low.cc (a68_make_formal_hole_decl): Get a boolean indicating
whether the declaration is for the address of the given symbol.
* a68.h: Update prototype of a68_make_formal_hole_decl.
* a68-low-holes.cc (a68_wrap_formal_var_hole): Pass a boolean to
a68_make_formal_hole_decl indicating whether an address is
required.
2026-02-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-prelude.cc (stand_prelude): Remove definitions for
bitpacks.
2026-02-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-moids-misc.cc (a68_is_c_mode): Allow C formal holes for
routines yielding strings.
* a68-low-holes.cc (a68_wrap_formal_proc_hole): Support wrappers
that yield strings.
* a68.h: Remove a68_posix_* and a68_lower_posix* prototypes.
* a68-low-posix.cc: Remove.
* a68-imports.cc (a68_open_packet): Get argument filename.
* Make-lang.in (ALGOL68_OBJS): Remove algol68/a68-low-posix.o.
* a68-low-runtime.def: Remove POSIX_*.
* lang.opt (-fcheck): Add new undocumented option -fbuilding-libga68.
* a68-parser-prelude.cc (stand_transput): New function.
(posix_prelude): Remove hardcoded additions to the top-level
environment and use a68_extract_revelations instead.
* a68-parser-extract.cc (a68_extract_revelation): Renamed from
extract_revelation and made accessible externally.
* a68-low.cc (a68_make_formal_hole_decl): Remove unneeded check.
(lower_lude_decl): New function.
(lower_module_text): Add calls to preludes and postludes of
standard modules if not building libga68.
(a68_lower_particular_program): Likewise.
* a68-low-prelude.cc (a68_lower_posixargc): Remove.
(a68_lower_posixargv): Likewise.
(a68_lower_posixgetenv): Likewise.
(a68_lower_posixputchar): Likewise.
(a68_lower_posixputs): Likewise.
(a68_lower_posixfconnect): Likewise.
(a68_lower_posixfopen): Likewise.
(a68_lower_posixfcreate): Likewise.
(a68_lower_posixfclose): Likewise.
(a68_lower_posixfsize): Likewise.
(a68_lower_posixlseek): Likewise.
(a68_lower_posixseekcur): Likewise.
(a68_lower_posixseekend): Likewise.
(a68_lower_posixseekset): Likewise.
(a68_lower_posixstdinfiledes): Likewise.
(a68_lower_posixstdoutfiledes): Likewise.
(a68_lower_posixstderrfiledes): Likewise.
(a68_lower_posixfileodefault): Likewise.
(a68_lower_posixfileordwr): Likewise.
(a68_lower_posixfileordonly): Likewise.
(a68_lower_posixfileowronly): Likewise.
(a68_lower_posixfileotrunc): Likewise.
(a68_lower_posixerrno): Likewise.
(a68_lower_posixexit): Likewise.
(a68_lower_posixperror): Likewise.
(a68_lower_posixstrerror): Likewise.
(a68_lower_posixfputc): Likewise.
(a68_lower_posixfputs): Likewise.
(a68_lower_posixgetchar): Likewise.
(a68_lower_posixfgetc): Likewise.
(a68_lower_posixgets): Likewise.
(a68_lower_posixfgets): Likewise.
2026-02-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-types.h (NO_LOWERER): Redefine as NULL.
(LOWERER_UNIMPL): Define.
* a68-parser-prelude.cc (a68_idf): Use LOWERER_UNIMPL instead of
NO_LOWERER.
(a68_prio): Likewise.
(a68_op): Likewise.
* a68-low-units.cc (a68_lower_identifier): Do not assume
declarations in A68_STANDENV all have lowerers.
(a68_lower_formula): Likewise.
(a68_lower_monadic_formula): Likewise.
2026-02-21 Jose E. Marchesi <jemarch@gnu.org>
* a68-imports.cc (a68_find_export_data): Make visible externally.
(a68_find_export_data): Try reading export data from an archive
file.
* a68.h: Adjust prototype of a68_find_export_data accordingly.
* a68-imports-archive.cc: New file.
* Make-lang.in (ALGOL68_OBJS): Build algol/a68-imports-archive.o.
2026-02-16 Jose E. Marchesi <jemarch@gnu.org>
PR algol68/124115
* a68-low-holes.cc (get_hole_symbol): Always set *addrp to avoid
uninitialized memory.
* a68-low.cc (a68_make_formal_hole_decl): Remove assert.
2026-02-12 James Bohl <bohlj47@gmail.com>
PR algol68/124049
* Make-lang.in (ALGOL68_OBJS): Add algol68/a68-moids-sorting.o.
* a68.h: Add prototype for a68_sort_union_packs.
* a68-moids-sorting.cc: New file.
* a68-parser-modes.cc (a68_make_moid_list): Call a68_sort_union_packs.
* ga68-exports.pk (ga68_mode_64): Add comment on union mode ordering.
2026-02-11 Jose E. Marchesi <jemarch@gnu.org>
* ga68-coding-guidelines.texi (Enquiry clauses): New section.
2026-02-10 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-units.cc (a68_lower_formal_hole): Call
a68_wrap_formal_proc_hole after a68_add_decl.
2026-02-09 Jose E. Marchesi <jemarch@gnu.org>
PR algol68/124028
* a68-low-bits.cc (a68_bits_shift): Avoid uninitialized save_expr.
2026-02-09 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-holes.cc (a68_wrap_formal_proc_hole): The wrapper is not
a top-level function.
* a68-low-units.cc (a68_lower_formal_hole): Reorder code and
remove spurious comment.
2026-02-06 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-units.cc (a68_lower_denotation): Fix call to
a68_u8_mbtouc.
2026-02-06 Jose E. Marchesi <jemarch@gnu.org>
* Make-lang.in (ALGOL68_OBJS): Add algol68/a68-low-holes.o.
* a68.h: Update prototypes.
* a68-types.h (struct TAG_T): New field nest_proc.
(NEST_PROC): Define.
* a68-parser.cc (a68_new_tag): Initialize NEST_PROC.
* a68-parser-extract.cc (extract_identities): Use NEST_PROC
instead of IN_PROC for taxes for defining-identifiers in identity
declarations of proc modes with formal holes as actual parameters.
* a68-moids-misc.cc (a68_is_c_mode): Modified to allow strings as
direct parameters.
* a68-low.cc (a68_make_proc_formal_hole_decl): Remove.
* a68-low-units.cc (a68_lower_identifier): Improve commentary.
(a68_lower_formal_hole): Factorize.
* a68-low-holes.cc: New file.
* a68-low-decls.cc (a68_lower_identity_declaration): Optimize
identity declarations of proc mode with formal holes as actual
parameters.
* a68-exports.cc (a68_add_identifier_to_moif): Honor NEST_PROC.
* ga68.texi (Communicating with C): Strings can now be passed as
parameters in formal holes.
2026-02-05 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-clauses.cc (a68_lower_revelation_ludes): Fix function
type for fdecl.
2026-02-05 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-bits.cc (a68_bits_set): Make bit number zero-based rathe
than one-based.
(a68_bits_clear): Likewise.
(a68_bits_test): Likewise.
* ga68.texi (Extended bits operators): Adapt documentation
accordingly.
2026-02-05 Jose E. Marchesi <jemarch@gnu.org>
PR algol68/123959
* a68.h: Expand prototype of a68_bits_shift to get a node argument
for location purposes.
* a68-low-bits.cc (a68_bits_shift): Implement RR compatible
semantics.
* a68-low-prelude.cc (a68_lower_shl3): Fix call to a68_bit_shift.
(a68_lower_shr3): Likewise.
* ga68.texi (Bits operators): Fix documentation of SHR and SHL.
2026-02-03 Iain Buclaw <ibuclaw@gdcproject.org>
* a68-parser-extract.cc (a68_extract_indicants): Don't call FORWARD if
skip_module_text returns NO_NODE.
2026-02-01 Jose E. Marchesi <jemarch@gnu.org>
* a68-low-bits.cc (a68_bits_test): Do not get a parameter with the
result moid.
* a68.h: Adapt prototype of a68_bits_test accordingly.
* a68-low-prelude.cc (a68_lower_test3): Adjust call accordingly.
2026-02-01 Jose E. Marchesi <jemarch@gnu.org>
* a68.h: Prototype for a68_make_proc_formal_hole_decl.
* a68-parser-extract.cc (extract_identities): Mark identity
declarations of proc modes whose actual parameter is a formal hole
as "inproc".
* a68-low.cc (a68_make_proc_formal_hole_decl): New function.
* a68-low-units.cc (a68_lower_formal_hole): Call
a68_make_proc_formal_hole_decl whenever necessary.
2026-01-31 Jose E. Marchesi <jemarch@gnu.org>
* a68.h: Prototypes for a68_bits_test and a68_lower_test3.
* a68-low-bits.cc (a68_bits_test): New function.
* a68-low-prelude.cc (a68_lower_test3): Likewise.
* a68-parser-prelude.cc (gnu_prelude): Declare TEST operators and
their priority.
* ga68.texi (Extended bits operators): New section.
2026-01-31 Jose E. Marchesi <jemarch@gnu.org>
* ga68.texi (POSIX files): Document SET and CLEAR operators.
* a68.h: Prototypes for a68_bits_set, a68_bits_clear,
a68_lower_set3 and a68_lower_clear3.
* a68-low-bits.cc (a68_bits_set): New function.
(a68_bits_clear): Likewise.
* a68-low-prelude.cc (a68_lower_set3): Likewise.
(a68_lower_clear3): Likewise.
* a68-parser-prelude.cc (gnu_prelude): Declare operators SET and
CLEAR and their priorities.
2026-01-30 Marc Poulhiès <dkm@kataplop.net>
* ga68-coding-guidelines.texi: Typo fix.
2026-01-29 Jose E. Marchesi <jemarch@gnu.org>
* ga68.vw: Update formal grammar to express the GNU extension.
* a68-parser.cc (a68_dont_mark_here): Likewise.
* a68-parser-scanner.cc (SINGLE_QUOTE_CHAR): Define.
(get_next_token): Recognize ' as QUOTE_SYMBOL.
(tokenise_source): Acknowledge QUOTE_SYMBOL.
* a68-parser-keywords.cc (a68_set_up_tables): Likewise.
* a68-parser-bottom-up.cc (reduce_primary_parts): Adjust parser to
brief form of selection.
* a68-parser-attrs.def (QUOTE_SYMBOL): New attribute.
* ga68.texi (Brief selection): New section.
2026-01-29 Jose E. Marchesi <jemarch@gnu.org>
* ga68.vw: Fix grammar for formal holes.
* ga68.texi (Particular programs): New section.
(Comments): Likewise.
* a68.h: Prototypes for a68_is_c_mode, a68_make_fomal_hole_decl,
a68_lower_formal_hole.
* a68-parser-attrs.def (FORMAL_HOLE): New attribute.
(LANGUAGE_INDICANT): Likewise.
* a68-parser-extract.cc (a68_elaborate_bold_tags): Elaborate
language indicants.
* a68-parser-moids-check.cc (mode_check_unit): Check mode in
formal holes.
* a68-low-units.cc (a68_lower_formal_hole): New function.
* a68-low.cc (a68_make_formal_hole_decl): Likewise.
* a68-moids-misc.cc (a68_is_c_mode): Likewise.
* a68-parser-bottom-up.cc (reduce_formal_holes): Likewise.
2026-01-24 Jose E. Marchesi <jemarch@gnu.org>
PR algol68/123733
* README: Mention minimum version of libgc.
2026-01-24 Jose E. Marchesi <jemarch@gnu.org>
Revert:
2026-01-17 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-prelude.cc (stand_prelude): Remove definitions for ^
operator.
* ga68.texi (Real operators): Remove entries for ^.
(Integral operators): Likewise.
2026-01-24 Jose E. Marchesi <jemarch@gnu.org>
PR algol68/123785
* a68-lang.cc (a68_init): Call a68_build_a68_type_nodes abefore
targetm.init_builtins.
2026-01-22 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
PR algol68/123734
* ga68.texi: Fix code examples to make them compilable.
And s/consists on/consists of/g.
2026-01-20 Jakub Jelinek <jakub@redhat.com>
* lang.opt (std=algol68, std=gnu68): Add dot at the end of the
description.
2026-01-20 Pietro Monteiro <pietro@sociotechnical.xyz>
* a68-low-clauses.cc (a68_lower_collateral_clause): Update
call to a68_lower_alloca.
* a68-low-coercions.cc (a68_lower_widening): Likewise.
* a68-low-generator.cc (allocator_t): Adjust typedef.
(fill_in_buffer): Adjust call to allocator.
(gen_mode): Likewise.
* a68-low-multiples.cc (a68_row_malloc): Change type parameter to MOID_T
from tree. Adjust call to a68_lower_malloc.
* a68-low-posix.cc (a68_posix_fgets): Adjust call to a68_row_malloc.
(a68_posix_gets): Likewise.
* a68-low-runtime.def (MALLOC_LEAF): Add definition for
_libga68_malloc_leaf.
* a68-low-strings.cc (a68_string_concat): Adjust call to
a68_lower_malloc.
(a68_string_from_char): Likewise.
* a68-low-units.cc (a68_lower_slice): Likewise.
* a68-low.cc (a68_low_dup): Adjust calls to a68_lower_malloc
and a68_lower_alloca.
(a68_lower_alloca): Change type parameter to MOID_T from tree.
(a68_lower_malloc): Likewise. Use _libga68_malloc_leaf if the MOID_T
doesn't have refs, use _libga68_malloc otherwise.
* a68-parser-modes.cc (a68_create_mode): Set has_refs on the new mode.
(is_mode_has_refs): New function.
(compute_derived_modes): Set has_refs on the chain of modes.
* a68-parser.cc (a68_new_moid): Set has_refs to false by
default.
* a68-types.h (struct MOID_T): Add member `has_refs`.
(HAS_REFS): New macro.
* a68.h (a68_row_malloc): Update prototype.
(a68_lower_alloca): Likewise.
(a68_lower_malloc): Likewise.
2026-01-17 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-prelude.cc (stand_prelude): Remove definitions for ^
operator.
* ga68.texi (Real operators): Remove entries for ^.
(Integral operators): Likewise.
2026-01-17 Jose E. Marchesi <jemarch@gnu.org>
* ga68-coding-guidelines.texi: New file.
* Make-lang.in (A68_CODING_GUIDE_MANUAL_FILES): Define.
(A68_TEXI_FILES): Add A68_CODING_GUIDE_MANUAL_FILES.
(doc/ga68-coding-guidelines.info): New rule.
(doc/ga68-coding-guidelines.dvi): Likewise.
(doc/ga68-coding-guidelines.pdf): Likewise.
($(build_htmldir)/ga68-coding-guidelines/index.html): Likewise.
(algol68.info): Add ga68-coding-guidelines.info.
(algol68.srcinfo): Likewise.
(algol68.install-info): Likewise.
(algol68.install-html): Likewise.
(algol68.dvi): Add ga68-coding-guielines.dvi.
(algol68.pdf): Add ga68-coding-guidelines.pdf.
2026-01-17 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-moids-equivalence.cc (are_packs_equivalent): Add
explicative comment.
2026-01-17 Jose E. Marchesi <jemarch@gnu.org>
PR algol68/123653
* a68-parser-moids-equivalence.cc (are_packs_equivalent): Fix
logic in name comparison.
2026-01-17 Jose E. Marchesi <jemarch@gnu.org>
* a68-parser-prelude.cc (stand_transput): Do not define
`Number' and `whole' as built-ins.
2026-01-17 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
PR algol68/123007
* a68-lang.cc (a68_type_for_mode): Handle TImode.
(a68_type_for_size): Handle unsigned_intTI_type_node.
2026-01-15 Jose E. Marchesi <jemarch@gnu.org>
* ga68.texi (POSIX files): Fix documentation of lseek.
2026-01-15 Jose E. Marchesi <jemarch@gnu.org>
* ga68.texi (Dialect options): {..} is not a valid variant of
(...).
2026-01-10 Pietro Monteiro <pietro@sociotechnical.xyz>
* a68-low-posix.cc (a68_posix_setexitstatus): Delete function.
(a68_posix_exit): New function.
* a68-low-prelude.cc (a68_lower_setexitstatus): Delete function.
(a68_lower_posixexit): New function.
* a68-low-runtime.def (SET_EXIT_STATUS): Delete definition.
(POSIX_EXIT): Add definition for posixexit.
* a68-parser-prelude.cc (posix_prelude): Remove setexitstatus
identifier from and add posixexit identifier to standenv.
* a68.h (a68_posix_setexitstatus): Delete prototype.
(a68_lower_setexitstatus): Likewise.
(a68_posix_exit): New prototype.
(a68_lower_posixexit): Likewise.
* ga68.texi:
2026-01-09 Jose E. Marchesi <jemarch@gnu.org>
* ga68.texi (Worthy characters): Escape @.
2026-01-04 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-lang.cc (a68_post_options): Disable psABI warnings.
2025-12-31 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-exports.cc (a68_asm_output_mode): Do not rely on DIM to
count modes in an union mode.
2025-12-31 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-imports.cc (a68_open_packet): Use right tag format in
a68_error.
2025-12-30 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-lang.cc (a68_init_options): Add an entry to A68_MODULE_FILES
to map module Transput to the basename ga68.
2025-12-29 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-scanner.cc (get_next_token): Bits denotation parsing
fixes.
* ga68.texi (SUPPER stropping): Document special rule for bits
denotations with radix 16.
2025-12-29 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-victal.cc (victal_check_mode_dec): Mind publicized
declarations.
(victal_check_variable_dec): Likewise.
(victal_check_identity_dec): Likewise.
2025-12-29 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-scope.cc (scope_module_text): New function.
(scope_module_declaration): Likewise.
(scope_particular_program): Likewise.
(scope_prelude_packet): Likewise.
(a68_scope_checker): Call scope_particular_program and
scope_prelude_packet.
2025-12-29 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-exports.cc (a68_asm_output_mode): Use .LMDnn labels for
modes instead of .LMnn.
2025-12-28 Jose E. Marchesi <jose.marchesi@oracle.com>
* ga68.texi (Packets): Update to specify only particular programs
and prelude packets are currently supported.
(Writing modules): Few updates.
(Module activation): Likewise.
(Modules and exports): New section.
2025-12-28 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-imports.cc (a68_open_packet): Use already decoded moifs
if present.
2025-12-28 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-imports.cc (a68_decode_modes): Do not deduplicate imported
modes here.
(a68_open_packet): Do it here.
* a68-parser-extract.cc (extract_revelation): Recurse into
publicized modules after interning modes in the current module,
not before.
2025-12-27 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-taxes.cc (tax_module_dec): Do not handle
DEFINING_MODULE_INDICANT.
* a68-exports.cc (a68_add_module_to_moif): Do not mangle module
names in module extracts.
(add_pub_revelations_to_moif): New function.
(a68_do_exports): Simplify and call add_pub_revelations_to_moif.
* a68-imports.cc (a68_decode_moifs): Add all decoded moifs to the
global list TOP_MOIF.
* a68-parser-extract.cc (extract_revelation): Recurse to import
extracts from publicized modules.
(a68_extract_indicants): Do not add symbol table entries for
defining modules.
* a68-types.h (struct TAG_T): Remove field EXPORTED.
(EXPORTED): Remove macro.
(TOP_MOIF): Define.
* a68-parser.cc (a68_parser): Initialize global list of moifs.
(a68_new_tag): Do not initialize EXPORTED.
2025-12-27 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-top-down.cc (a68_top_down_parser): Stop parsing after
longjump.
2025-12-27 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-bottom-up.cc (a68_bottom_up_error_check): Do not
check for the absence of public-symbols.
(a68_bottom_up_coalesce_pub): Removed function.
* a68-parser.cc (a68_parser): Do not call
a68_bottom_up_coalesce_pub
* a68-parser-extract.cc (a68_extract_indicants): Adapt to the
presence of public-symbols.
* a68-parser-modes.cc (get_mode_from_proc_variables): Likewise.
* a68-parser-taxes.cc (tax_variable_dec): Likewise.
(tax_proc_variable_dec): Likewise.
(tax_op_dec): Likewise
(tax_prio_dec): Likewise.
* a68-low-decls.cc (a68_lower_mode_declaration): Adapt to the
presence of public-symbols.
(a68_lower_variable_declaration): Likewise.
(a68_lower_identity_declaration): Likewise.
(a68_lower_procedure_declaration): Likewise.
(a68_lower_procedure_variable_declaration): Likewise.
(a68_lower_brief_operator_declaration): Likewise.
(a68_lower_operator_declaration): Likewise.
2025-12-27 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-moids-misc.cc (a68_pack_soids_in_moid): Return the result of
a68_register_extra_mode.
2025-12-27 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-extract.cc (a68_extract_indicants): Do not
detect_redefined_keyword for accessed modules.
2025-12-27 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-scope.cc (scope_access_clause): New function.
(scope_enclosed_clause): Use scope_access_clause.
2025-12-27 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-bottom-up.cc (reduce_enclosed_clauses): Reduce joined
list of revelations.
* a68-low-clauses.cc (a68_lower_revelation_ludes): New function.
(a68_lower_access_clause): Use a68_lower_revelation_ludes.
2025-12-27 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-extract.cc (a68_extract_indicants): Fix
MODE_DECLARATION to MODULE_DECLARATION typo.
2025-12-27 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-top-down.cc (top_down_access): An access clause may
be nested in another access clause.
* a68-parser-extract.cc (a68_extract_indicants): Coalesce 'pub'
symbols.
(a68_extract_indicants): Nested access are not allowed in module
texts.
* a68-parser-bottom-up.cc (expected_module_text): New function.
(reduce_prelude_packet): Use expected_module_text.
(a68_bottom_up_error_check): Add comment.
2025-12-27 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-types.h (struct MOIF_T): Add chain_next to GTY info.
* a68-imports.cc (a68_decode_modes): Mode offsets are relative to
the start of the moif, not the start of the exports.
(a68_decode_moifs): Renamed from a68_decode_moif and changed to
decode multiple moifs from the exports.
(a68_open_packet): Call a68_decode_moifs and look for the right
moif.
* a68-exports.cc (a68_moif_new): Initialize NEXT (moif).
2025-12-23 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* a68.h (a68_file_size): Changed to use file descriptor.
(a68_file_read): Likewise.
* a68-parser-scanner.cc (a68_file_size): Likewise.
(a68_file_read): Likewise.
(read_source_file): Adapt `a68_file_{size,read}'.
(include_files): Likewise.
* a68-lang.cc (a68_handle_option): Likewise.
* a68-imports.cc (a68_find_export_data): Implement
reading from module's .m68 file if available.
2025-12-22 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-imports.cc (PARSE_INDICANT): Fix handling of uderscore
characters.
2025-12-22 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* a68-parser-scanner.cc (a68_file_size): Fix comment to mention
it accepts `FILE *' and not file descriptor.
Fix invocation of `lseek' to correctly revert position of file
offset to previous one.
2025-12-20 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-low-moids.cc (a68_lower_moids): Fix for layout of
incomplete types.
2025-12-19 Jakub Jelinek <jakub@redhat.com>
* a68-low-decls.cc (a68_lower_variable_declaration): Fix comment typo,
varaible -> variable.
2025-12-17 Jose E. Marchesi <jose.marchesi@oracle.com>
PR algol68/123006
* a68-imports.cc (complete_encoded_mode): Fix handling of flex
modes.
2025-12-17 Jose E. Marchesi <jose.marchesi@oracle.com>
PR algol68/123132
* a68-imports.cc (DOFFSET): Fix big-endian path.
2025-12-16 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-bottom-up.cc (reduce_prelude_packet): Do not support
multiple module definitions per packet.
2025-12-16 Jose E. Marchesi <jose.marchesi@oracle.com>
* lang.opt.urls: Regenerate.
2025-12-16 Jose E. Marchesi <jose.marchesi@oracle.com>
* lang.opt (-fmodules-map): New option.
(-fmodules-map-file): Likewise.
* a68.h: Add prototype for a68_process_module_map.
* a68-imports.cc (SKIP_WHITESPACES): Define.
(PARSE_BASENAME): Likewise.
(PARSE_INDICANT): Likewise.
(a68_process_module_map): New function.
* a68-lang.cc: (a68_init): Move initialization of
A68_MODULE_FILES from there...
(a68_init_options): to here.
(a68_handle_option): Handle OPT_fmodules_map and
OPT_fmodules_map_.
* a68-parser-pragmat.cc (handle_access_in_pragmat): Normalize
module indicants to upper case.
* ga68.texi (Module search options): New section.
2025-12-16 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68.h: Prototypes for a68_get_file_size and a68_file_read.
* a68-parser-scanner.cc (a68_file_size): New function.
(a68_file_read): Renamed from io_read.
(get_source_size): Deleted function.
(include_files): Use a68_file_size and a68_file_read.
2025-12-16 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* a68-imports.cc (dump_encoded_mode): Replace "basic" with
"string".
2025-12-15 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* ga68-exports.pk (ga68_text_reloc_64): Renamed and
adapted from ga68_text_reloc.
(ga68_data_reloc_64): Renamed and adapted from ga68_data_reloc.
(ga68_mode_64): Renamed and adapted from ga68_mode.
(ga68_extract_64): Renamed and adapted from ga68_extract.
(ga68_module_64): Renamed and adapted from ga68_module.
(ga68_text_reloc_32): New type.
(ga68_data_reloc_32): Likewise.
(ga68_mode_32): Likewise.
(ga68_extract_32): Likewise.
(ga68_module_32): Likewise.
2025-12-15 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* ga68-exports.pk: Fix comment and value for magic number.
2025-12-13 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-bottom-up.cc (a68_bottom_up_coalesce_pub): Do not
mark defining entities as publicized.
* a68-parser-extract.cc (a68_extract_indicants): Mark public
defining entities.
(a68_extract_priorities): Likewise.
(a68_extract_operators): Likewise.
(a68_extract_identities): Likewise.
(a68_extract_variables): Likewise.
(a68_extract_proc_identities): Likewise.
(a68_extract_proc_variables): Likewise.
2025-12-12 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-parser-scanner.cc (a68_lexical_analyser): New argument
empty_program.
* a68.h: Update prototype of a68_lexical_analyser.
* a68-parser.cc (a68_parser): Emit error for empty input files.
2025-12-12 Pietro Monteiro <pietro@sociotechnical.xyz>
* ga68.texi (@opindex I): Expand.
(@oindex L): New.
* lang.opt.urls: Regenerate.
2025-12-10 Jose E. Marchesi <jose.marchesi@oracle.com>
* lang.opt: Add entry for OPT_L.
2025-12-10 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-imports.cc (a68_try_packet_in_directory): do not try
extensionless packet files.
2025-12-10 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-low-ints.cc (a68_int_sign): Avoid gimplifying val twice.
* a68-low-reals.cc (a68_real_sign): Likewise.
2025-12-10 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-low-prelude.cc (a68_lower_char_mult3): Fix asserts.
2025-12-06 Jose E. Marchesi <jose.marchesi@oracle.com>
PR algol68/123007
* a68-lang.cc (a68_type_for_size): Handle intTI_type_node.
2025-12-03 Jose E. Marchesi <jose.marchesi@oracle.com>
PR algol68/122954
* a68-types.h (NO_A68_REF): Delete.
(NO_ARRAY): Likewise.
(NO_BOOK): Likewise.
(NO_BOOL): Likewise.
(NO_BYTE): Likewise.
(NO_CONSTANT): Likewise.
(NO_DEC): Likewise.
(NO_EDLIN): Likewise.
(NO_FILE): Likewise.
(NO_FORMAT): Likewise.
(NO_GPROC): Likewise.
(NO_HANDLE): Likewise.
(NO_INT): Likewise.
(NO_JMP_BUF): Likewise.
(NO_SCOPE): Moved to a68-parser-scope.cc.
(NO_TUPLE): Likewise.
(TUPLE): Likewise.
(NO_GINFO): Converted from macro to contexpr.
(NO_KEYWORD): Likewise.
(NO_NINFO): Likewise.
(NO_PACK): Likewise.
(NO_SOID): Likewise.
(NO_TOKEN): Likewise.
(NO_NOTE): Likewise.
(MODES_T): Turned from typedef to forward declaration.
(NODE_T): Likewise.
(MODE_CACHE_T): Likewise.
(MOID_T): Likewise.
(GINFO_T): Likewise.
(KEYWORD_T): Likewise.
(LINE_T): Likewise.
(NODE_INFO_T): Likewise.
(PACK_T): Likewise.
(SOID_T): Likewise.
(TABLE_T): Likewise.
(TAG_T): Likewise.
(TOKEN_T): Likewise.
(ORIGIN_T): Likewise.
(POSTULATE_T): Likewise.
(OPTIONS_T): Likewise.
(PARSER_T): Likewise.
(MODULE_T): Likewise.
(EXTRACT_T): Likewise.
(MOIF_T): Likewise.
(A68_T): Likewise.
* a68-parser-scope.cc (NO_TUPLE): Moved from a68-types.h
(NO_SCOPE): Likewise.
(TUPLE): Likewise.
2025-12-03 Jose E. Marchesi <jose.marchesi@oracle.com>
PR algol68/122966
* a68-low-clauses.cc (a68_lower_collateral_clause): Remove
self-assignment.
2025-12-02 Jose E. Marchesi <jose.marchesi@oracle.com>
PR algol68/122954
* a68-low-clauses.cc (serial_clause_dsa): Avoid redundant
initialization.
* a68-parser-modes.cc (compute_derived_modes): Likewise.
* a68-low.cc (a68_lower_tree): Remove redundant break.
2025-12-01 Jose E. Marchesi <jose.marchesi@oracle.com>
PR algol68/122944
* Make-lang.in (algol68.install-common): Link
A68_TARGET_INSTALL_NAME in bindir.
2025-12-01 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* a68-exports.cc: Include memmodel.h.
* a68-imports.cc: Likeswise.
2025-12-01 Jakub Jelinek <jakub@redhat.com>
* a68-low-multiples.cc (copy_multiple_dimension_elems): Use
HOST_SIZE_T_PRINT_DEC in xasprintf format string and cast to
fmt_size_t.
2025-11-30 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-diagnostics.cc (diagnostic): Copypasto "a meek"
should be "a firm". Support printing line number for programs
longer than 9 lines. Use obstack_append_str rather than
obstack_grow.
(obstack_append_str): New function.
2025-11-30 Andrew Pinski <andrew.pinski@oss.qualcomm.com>
* lang.opt.urls: Regenerate.
2025-11-30 Jose E. Marchesi <jose.marchesi@oracle.com>
* lang.opt: New file.
* lang.opt.urls: Generate.
2025-11-30 Jose E. Marchesi <jose.marchesi@oracle.com>
* ga68-internals.texi: New file.
* ga68.texi: Likewise.
* Make-lang.in: New file.
* config-lang.in: Likewise.
2025-11-30 Jose E. Marchesi <jose.marchesi@oracle.com>
* a68-unistr.c: New file.
* a68-lang.cc: Likewise.
* a68spec.cc: Likewise.
* lang-specs.h: Likewise.
* README: Likewise.
* a68-tree.def: Likewise.
* a68-types.h: Likewise.
* a68.h: Likewise.
* ga68.vw: Likewise.
* a68-low-moids.cc: Likewise.
* a68-low-coercions.cc: Likewise.
* a68-low-generator.cc: Likewise.
* a68-low-units.cc: Likewise.
* a68-low-ranges.cc: Likewise.
* a68-low-builtins.cc: Likewise.
* a68-low-runtime.cc: Likewise.
* a68-low-runtime.def: Likewise.
* a68-low-clauses.cc: Likewise.
* a68-low-decls.cc: Likewise.
* a68-low-posix.cc: Likewise.
* a68-low-prelude.cc: Likewise.
* a68-low-multiples.cc: Likewise.
* a68-low-structs.cc: Likewise.
* a68-low-unions.cc: Likewise.
* a68-low-bits.cc: Likewise.
* a68-low-bools.cc: Likewise.
* a68-low-chars.cc: Likewise.
* a68-low-complex.cc: Likewise.
* a68-low-ints.cc: Likewise.
* a68-low-procs.cc: Likewise.
* a68-low-reals.cc: Likewise.
* a68-low-refs.cc: Likewise.
* a68-low-strings.cc: Likewise.
* a68-low.cc: Likewise.
* a68-low-misc.cc: Likewise.
* a68-parser-pragmat.cc: Likewise.
* a68-parser-serial-dsa.cc: Likewise.
* a68-parser-debug.cc: Likewise.
2025-11-30 Jose E. Marchesi <jose.marchesi@oracle.com>
Marcel van der Veer <algol68g@xs4all.nl>
* a68-parser-extract.cc: New file.
* a68-parser-scope.cc: Likewise.
* a68-parser-taxes.cc: Likewise.
* a68-moids-diagnostics.cc: Likewise.
* a68-moids-misc.cc: Likewise.
* a68-moids-to-string.cc: Likewise.
* a68-parser-modes.cc: Likewise.
* a68-parser-moids-check.cc: Likewise.
* a68-parser-moids-coerce.cc: Likewise.
* a68-parser-moids-equivalence.cc: Likewise.
* a68-postulates.cc: Likewise.
* a68-parser-prelude.cc: Likewise.
* a68-parser-victal.cc: Likewise.
* a68-parser-bottom-up.cc: Likewise.
* a68-parser-brackets.cc: Likewise.
* a68-parser-top-down.cc: Likewise.
* a68-parser-keywords.cc: Likewise.
* a68-parser-scanner.cc: Likewise.
* a68-parser-attrs.def: Likewise.
* a68-parser.cc: Likewise.
* a68-imports.cc: Likewise.
* a68-exports.cc: Likewise.
* ga68-exports.pk: Likewise.
* a68-diagnostics.cc: Likewise.
Copyright (C) 2025-2026 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.