semver: add proper semantic versioning and ABI check workflow for libllama

- Add LLAMA_VERSION_MAJOR/MINOR variables to CMakeLists.txt (both default 0)
  replacing the hard-coded 0.0.{build_number} scheme
- Use GenerateExportHeader in src/CMakeLists.txt to generate llama_export.h
  and replace the manual LLAMA_API visibility macro dance in include/llama.h
- Set SOVERSION to LLAMA_VERSION_MAJOR so the .so symlink tracks the major
  ABI version (libllama.so.0 -> libllama.so.0.MINOR.PATCH)
- Install the generated llama_export.h alongside llama.h as a public header
- Add scripts/libllama.abi: committed baseline of exported llama_* symbols
  (233 symbols extracted from the current build)
- Add .github/workflows/libllama-abi-check.yml: CI workflow that builds
  libllama, extracts symbols with nm, and compares against the baseline to
  determine whether a MAJOR (symbols removed) or MINOR (symbols added)
  version bump is required

Agent-Logs-Url: https://github.com/ggml-org/llama.cpp/sessions/e9059c50-ffff-4233-a16d-13a7214f7b98

Co-authored-by: ggerganov <1991296+ggerganov@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-04-15 11:44:00 +00:00
committed by GitHub
parent 8dc530b86d
commit 3f3d62ffec
5 changed files with 358 additions and 19 deletions

233
scripts/libllama.abi Normal file
View File

@@ -0,0 +1,233 @@
llama_adapter_get_alora_invocation_tokens
llama_adapter_get_alora_n_invocation_tokens
llama_adapter_lora_free
llama_adapter_lora_init
llama_adapter_meta_count
llama_adapter_meta_key_by_index
llama_adapter_meta_val_str
llama_adapter_meta_val_str_by_index
llama_add_bos_token
llama_add_eos_token
llama_attach_threadpool
llama_backend_free
llama_backend_init
llama_batch_free
llama_batch_get_one
llama_batch_init
llama_chat_apply_template
llama_chat_builtin_templates
llama_context_default_params
llama_copy_state_data
llama_decode
llama_detach_threadpool
llama_detokenize
llama_encode
llama_flash_attn_type_name
llama_free
llama_free_model
llama_get_embeddings
llama_get_embeddings_ith
llama_get_embeddings_seq
llama_get_logits
llama_get_logits_ith
llama_get_memory
llama_get_model
llama_get_sampled_candidates_count_ith
llama_get_sampled_candidates_ith
llama_get_sampled_logits_count_ith
llama_get_sampled_logits_ith
llama_get_sampled_probs_count_ith
llama_get_sampled_probs_ith
llama_get_sampled_token_ith
llama_get_state_size
llama_init_from_model
llama_load_model_from_file
llama_load_session_file
llama_log_get
llama_log_set
llama_max_devices
llama_max_parallel_sequences
llama_max_tensor_buft_overrides
llama_memory_breakdown_print
llama_memory_can_shift
llama_memory_clear
llama_memory_seq_add
llama_memory_seq_cp
llama_memory_seq_div
llama_memory_seq_keep
llama_memory_seq_pos_max
llama_memory_seq_pos_min
llama_memory_seq_rm
llama_model_chat_template
llama_model_cls_label
llama_model_decoder_start_token
llama_model_default_params
llama_model_desc
llama_model_free
llama_model_get_vocab
llama_model_has_decoder
llama_model_has_encoder
llama_model_init_from_user
llama_model_is_diffusion
llama_model_is_hybrid
llama_model_is_recurrent
llama_model_load_from_file
llama_model_load_from_file_ptr
llama_model_load_from_splits
llama_model_meta_count
llama_model_meta_key_by_index
llama_model_meta_key_str
llama_model_meta_val_str
llama_model_meta_val_str_by_index
llama_model_n_cls_out
llama_model_n_ctx_train
llama_model_n_embd
llama_model_n_embd_inp
llama_model_n_embd_out
llama_model_n_head
llama_model_n_head_kv
llama_model_n_layer
llama_model_n_params
llama_model_n_swa
llama_model_quantize
llama_model_quantize_default_params
llama_model_rope_freq_scale_train
llama_model_rope_type
llama_model_save_to_file
llama_model_size
llama_n_batch
llama_n_ctx
llama_n_ctx_seq
llama_n_ctx_train
llama_n_embd
llama_n_head
llama_n_layer
llama_n_seq_max
llama_n_threads
llama_n_threads_batch
llama_n_ubatch
llama_n_vocab
llama_new_context_with_model
llama_numa_init
llama_opt_epoch
llama_opt_init
llama_opt_param_filter_all
llama_params_fit
llama_perf_context
llama_perf_context_print
llama_perf_context_reset
llama_perf_sampler
llama_perf_sampler_print
llama_perf_sampler_reset
llama_pooling_type
llama_print_system_info
llama_sampler_accept
llama_sampler_apply
llama_sampler_chain_add
llama_sampler_chain_default_params
llama_sampler_chain_get
llama_sampler_chain_init
llama_sampler_chain_n
llama_sampler_chain_remove
llama_sampler_clone
llama_sampler_free
llama_sampler_get_seed
llama_sampler_init
llama_sampler_init_adaptive_p
llama_sampler_init_dist
llama_sampler_init_dry
llama_sampler_init_grammar
llama_sampler_init_grammar_lazy
llama_sampler_init_grammar_lazy_patterns
llama_sampler_init_greedy
llama_sampler_init_infill
llama_sampler_init_logit_bias
llama_sampler_init_min_p
llama_sampler_init_mirostat
llama_sampler_init_mirostat_v2
llama_sampler_init_penalties
llama_sampler_init_temp
llama_sampler_init_temp_ext
llama_sampler_init_top_k
llama_sampler_init_top_n_sigma
llama_sampler_init_top_p
llama_sampler_init_typical
llama_sampler_init_xtc
llama_sampler_name
llama_sampler_reset
llama_sampler_sample
llama_save_session_file
llama_set_abort_callback
llama_set_adapter_cvec
llama_set_adapters_lora
llama_set_causal_attn
llama_set_embeddings
llama_set_n_threads
llama_set_sampler
llama_set_state_data
llama_set_warmup
llama_split_path
llama_split_prefix
llama_state_get_data
llama_state_get_size
llama_state_load_file
llama_state_save_file
llama_state_seq_get_data
llama_state_seq_get_data_ext
llama_state_seq_get_size
llama_state_seq_get_size_ext
llama_state_seq_load_file
llama_state_seq_save_file
llama_state_seq_set_data
llama_state_seq_set_data_ext
llama_state_set_data
llama_supports_gpu_offload
llama_supports_mlock
llama_supports_mmap
llama_supports_rpc
llama_synchronize
llama_time_us
llama_token_bos
llama_token_cls
llama_token_eos
llama_token_eot
llama_token_fim_mid
llama_token_fim_pad
llama_token_fim_pre
llama_token_fim_rep
llama_token_fim_sep
llama_token_fim_suf
llama_token_get_attr
llama_token_get_score
llama_token_get_text
llama_token_is_control
llama_token_is_eog
llama_token_nl
llama_token_pad
llama_token_sep
llama_token_to_piece
llama_tokenize
llama_vocab_bos
llama_vocab_cls
llama_vocab_eos
llama_vocab_eot
llama_vocab_fim_mid
llama_vocab_fim_pad
llama_vocab_fim_pre
llama_vocab_fim_rep
llama_vocab_fim_sep
llama_vocab_fim_suf
llama_vocab_get_add_bos
llama_vocab_get_add_eos
llama_vocab_get_add_sep
llama_vocab_get_attr
llama_vocab_get_score
llama_vocab_get_text
llama_vocab_is_control
llama_vocab_is_eog
llama_vocab_mask
llama_vocab_n_tokens
llama_vocab_nl
llama_vocab_pad
llama_vocab_sep
llama_vocab_type