Base Bash v2 symbol map

August 14, 2026 ยท View on GitHub

Base Bash v2 has one coherent public function namespace: base_. Public metadata, configuration, and runtime state remain under BASE_BASH_LIBS_. Implementation- only functions use __base_bash_libs_...__ and are intentionally outside the compatibility contract.

The v2 release is a clean break. Generic v1 names are not defined and no compatibility alias is installed. For source trees or scripts that still use the v1 surface, run scripts/migrate-v2-symbols on a copy or a clean branch, then review the result and run the consumer's tests.

Public function map

The tables below are complete by module. Where a rule is shown, every legacy name in that row is covered by the rule; the explicit lists make the inventory auditable without requiring a parser.

Standard library

base_init and base_require_version already use the v2 package namespace and keep their names. Every other listed stdlib function maps to base_std_ followed by the legacy name with a leading std_ removed when present.

Legacy namesv2 names
is_interactive, check_bash_version, import, add_to_path, dedupe_path, print_pathbase_std_is_interactive, base_std_check_bash_version, base_std_import, base_std_add_to_path, base_std_dedupe_path, base_std_print_path
set_log_level, set_log_category_level, log_is_enabledbase_std_set_log_level, base_std_set_log_category_level, base_std_log_is_enabled
log_fatal, log_error, log_warn, log_info, log_debug, log_verbosebase_std_log_fatal, base_std_log_error, base_std_log_warn, base_std_log_info, base_std_log_debug, base_std_log_verbose
log_info_file, log_debug_file, log_verbose_filebase_std_log_info_file, base_std_log_debug_file, base_std_log_verbose_file
log_info_enter, log_debug_enter, log_verbose_enter, log_info_leave, log_debug_leave, log_verbose_leavebase_std_log_info_enter, base_std_log_debug_enter, base_std_log_verbose_enter, base_std_log_info_leave, base_std_log_debug_leave, base_std_log_verbose_leave
print_error, print_warn, print_info, print_success, print_bold, print_message, print_tty, dump_tracebase_std_print_error, base_std_print_warn, base_std_print_info, base_std_print_success, base_std_print_bold, base_std_print_message, base_std_print_tty, base_std_dump_trace
exit_if_error, fatal_error, is_dry_run, std_runbase_std_exit_if_error, base_std_fatal_error, base_std_is_dry_run, base_std_run

| safe_mkdir, safe_touch, safe_truncate, safe_cd, safe_unalias | base_std_safe_mkdir, base_std_safe_touch, base_std_safe_truncate, base_std_safe_cd, base_std_safe_unalias | | std_register_cleanup_hook, std_unregister_cleanup_hook, std_register_cleanup_path, std_unregister_cleanup_path | base_std_register_cleanup_hook, base_std_unregister_cleanup_hook, base_std_register_cleanup_path, base_std_unregister_cleanup_path | | std_make_temp_file, std_make_temp_dir, std_command_path, std_function_exists | base_std_make_temp_file, base_std_make_temp_dir, base_std_command_path, base_std_function_exists | | assert_variable_name, assert_indexed_array, assert_associative_array, assert_function_exists, assert_not_null | base_std_assert_variable_name, base_std_assert_indexed_array, base_std_assert_associative_array, base_std_assert_function_exists, base_std_assert_not_null | | assert_integer, assert_integer_range, assert_arg_count, assert_command_exists, assert_file_exists, assert_executable, assert_dir_exists | base_std_assert_integer, base_std_assert_integer_range, base_std_assert_arg_count, base_std_assert_command_exists, base_std_assert_file_exists, base_std_assert_executable, base_std_assert_dir_exists | | get_my_source_dir, ask_yes_no, wait_for_enter | base_std_get_my_source_dir, base_std_ask_yes_no, base_std_wait_for_enter |

base_std_run is the non-exiting v2 default. The explicit fail-fast sibling base_std_run_or_exit has no v1 alias and should be used only when termination is part of the caller's intended policy.

Companion libraries

ModuleLegacy namesv2 names
filefile_section_exists, file_section_needs_update, update_file_sectionbase_file_section_exists, base_file_section_needs_update, base_file_update_file_section
gitgit_detect_default_branch, git_worktree_path_for_branch, git_list_worktree_branches, git_branch_upstream, git_branch_merged_to_ref, git_list_remote_branches, git_update_repo, git_get_current_branch, check_script_up_to_datebase_git_detect_default_branch, base_git_worktree_path_for_branch, base_git_list_worktree_branches, base_git_branch_upstream, base_git_branch_merged_to_ref, base_git_list_remote_branches, base_git_update_repo, base_git_get_current_branch, base_git_check_script_up_to_date
ghgh_require_cli, gh_auth_status_diagnostics, gh_report_command_failure, gh_run, gh_repo_from_remote_url, gh_infer_repo_from_origin, gh_repo_default_branch, gh_api_with_retrybase_gh_require_cli, base_gh_auth_status_diagnostics, base_gh_report_command_failure, base_gh_run, base_gh_repo_from_remote_url, base_gh_infer_repo_from_origin, base_gh_repo_default_branch, base_gh_api_with_retry
strstr_lower, str_upper, str_ltrim, str_rtrim, str_trim, str_contains, str_starts_with, str_ends_with, str_split, str_joinbase_str_lower, base_str_upper, base_str_ltrim, base_str_rtrim, base_str_trim, base_str_contains, base_str_starts_with, base_str_ends_with, base_str_split, base_str_join
argarg_parsebase_arg_parse
listlist_append, list_prepend, list_remove, list_contains, list_unique, list_lengthbase_list_append, base_list_prepend, base_list_remove, base_list_contains, base_list_unique, base_list_length

The standalone launcher keeps main as the application entrypoint. Its helper functions use base_launcher_:

Legacy namev2 name
base_bash_die, base_bash_resolve_path, base_bash_package_root, base_bash_ensure_supported_bashbase_launcher_die, base_launcher_resolve_path, base_launcher_package_root, base_launcher_ensure_supported_bash
base_bash_lib_dir_is_usable, base_bash_resolve_lib_dir, base_bash_source_stdlibbase_launcher_lib_dir_is_usable, base_launcher_resolve_lib_dir, base_launcher_source_stdlib
import_base_bash_lib, base_bash_run_script, base_bash_usagebase_launcher_import_base_bash_lib, base_launcher_run_script, base_launcher_usage

The application-defined main function is intentionally not namespaced.

Global and environment map

Legacy namev2 name
__SCRIPT_ARGS__BASE_BASH_LIBS_SCRIPT_ARGS
__SCRIPT_DIR__BASE_BASH_LIBS_SCRIPT_DIR
__color__BASE_BASH_LIBS_STD_COLOR_ENABLED
COLOR_BOLD, COLOR_RED, COLOR_GREEN, COLOR_YELLOW, COLOR_BLUE, COLOR_OFFBASE_BASH_LIBS_STD_COLOR_BOLD, BASE_BASH_LIBS_STD_COLOR_RED, BASE_BASH_LIBS_STD_COLOR_GREEN, BASE_BASH_LIBS_STD_COLOR_YELLOW, BASE_BASH_LIBS_STD_COLOR_BLUE, BASE_BASH_LIBS_STD_COLOR_OFF
LOG_DEBUG, LOG_UTCBASE_BASH_LIBS_LOG_DEBUG, BASE_BASH_LIBS_LOG_UTC
BASE_BASH_BOOTSTRAP_SOURCEBASE_BASH_LIBS_BOOTSTRAP_SOURCE
BASE_CLI_PRIMARY_LOGBASE_BASH_LIBS_PRIMARY_LOG
BASE_GIT_PULL_MAX_ATTEMPTSBASE_BASH_LIBS_GIT_PULL_MAX_ATTEMPTS
BASE_BASH_FILE_START_MARKER, BASE_BASH_FILE_END_MARKER, BASE_BASH_FILE_NEW_CONTENT_FILEBASE_BASH_LIBS_FILE_START_MARKER, BASE_BASH_LIBS_FILE_END_MARKER, BASE_BASH_LIBS_FILE_NEW_CONTENT_FILE
DRY_RUN, dry_runBASE_BASH_LIBS_DRY_RUN
__lib_std_sourced__, __lib_file_sourced__, __lib_git_sourced__, __lib_gh_sourced__, __lib_str_sourced__, __lib_arg_sourced__, __lib_list_sourced__BASE_BASH_LIBS_STDLIB_LOADED, BASE_BASH_LIBS_FILE_LOADED, BASE_BASH_LIBS_GIT_LOADED, BASE_BASH_LIBS_GH_LOADED, BASE_BASH_LIBS_STR_LOADED, BASE_BASH_LIBS_ARG_LOADED, BASE_BASH_LIBS_LIST_LOADED
_log_levels, _loggers_level_map, _log_category_level_map, _log_primary_sink_failed_pathsBASE_BASH_LIBS_STD_LOG_LEVELS, BASE_BASH_LIBS_STD_LOGGER_LEVELS, BASE_BASH_LIBS_STD_LOG_CATEGORY_LEVELS, BASE_BASH_LIBS_STD_LOG_FAILED_SINKS

NO_COLOR, PATH, TMPDIR, BASH_*, GH_*, TZ, and other documented shell or ecosystem variables remain caller-owned inputs. The framework does not define or export them, so they are not part of its symbol namespace.

Internal prefix map

All implementation-only functions and local holders use the same module segment under the reserved internal namespace:

Legacy prefixv2 prefix
__lib_std_require_supported_bash__, __std_, __log_, __print_, __init_colors__, __join_message__, __resolve_log_category_level__, __is_valid_variable_name____base_bash_libs_std_...__
__file_, __preserve_file_mode____base_bash_libs_file_...__
__git___base_bash_libs_git_...__
__gh___base_bash_libs_gh_...__
__arg___base_bash_libs_arg_...__
__list___base_bash_libs_list_...__
__str___base_bash_libs_str_...__

No v2 compatibility guarantee is made for internal names. New code must not call them; collision fixtures and static checks ensure generic internal names are not exported by the libraries.