Files
LithosAnanake/src/word_source/include/vocabulary_words.h
T
Robert Allan JamesandClaude Opus 5.5 f29658a65d FABRIC-3.10.8 K-8: free the vocabulary indexes and inference outputs at vm_cleanup
The ~3.4 KB/VM heap residual left after K-4 was each dead VM's CONTEXT
and FORTH first-character bucket arrays (84 blocks, 3,400 bytes per
worker), plus last_inference_outputs. New vocabulary_free_indexes();
both vm_cleanup()s call it and free the outputs. Per-VM residual is now
232 bytes: the registry node (kept by design) and the vm_physics node
(open finding). 3-ISA acceptance clean, hash 0x99b01134c3d3049c.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 09:21:16 -04:00

110 lines
3.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
StarForth — Steady-State Virtual Machine Runtime
Copyright (c) 2023–2025 Robert A. James
All rights reserved.
This file is part of the StarForth project.
Licensed under the StarForth License, Version 1.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at:
https://github.com/star.4th@proton.me/StarForth/LICENSE.txt
This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
express or implied, including but not limited to the warranties of
merchantability, fitness for a particular purpose, and noninfringement.
See the License for the specific language governing permissions and
limitations under the License.
StarForth — Steady-State Virtual Machine Runtime
Copyright (c) 2023–2025 Robert A. James
All rights reserved.
This file is part of the StarForth project.
Licensed under the StarForth License, Version 1.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at:
https://github.com/star.4th@proton.me/StarForth/LICENSE.txt
This software is provided "AS IS", WITHOUT WARRANTY OF ANY KIND,
express or implied, including but not limited to the warranties of
merchantability, fitness for a particular purpose, and noninfringement.
See the License for the specific language governing permissions and
limitations under the License.
*/
#ifndef VOCABULARY_WORDS_H
#define VOCABULARY_WORDS_H
#include "vm.h"
/**
* @defgroup vocabulary FORTH-79 Vocabulary System Words
* @{
* @brief Standard vocabulary manipulation words
*
* @par VOCABULARY ( -- )
* Create new vocabulary
* @par DEFINITIONS ( -- )
* Set current vocabulary
* @par CONTEXT ( -- addr )
* Variable: search vocabulary pointer
* @par CURRENT ( -- addr )
* Variable: definition vocabulary pointer
* @par FORTH ( -- )
* Select FORTH vocabulary
* @par ONLY ( -- )
* Set minimal search order
* @par ALSO ( -- )
* Duplicate top of search order
* @par ORDER ( -- )
* Display search order
* @par PREVIOUS ( -- )
* Remove top of search order
* @par (FIND) ( addr -- addr flag )
* Find word in dictionary (primitive)
* @}
*/
/*
* @brief Registers all vocabulary-related words in the Forth system
* @param vm Pointer to the virtual machine instance
*/
void register_vocabulary_words(VM * vm);
/**
* @brief Direct vocabulary creation (kernel bootstrap)
* @param vm Pointer to the virtual machine instance
* @param name Vocabulary name
*/
void vocabulary_create_vocabulary_direct(VM *vm, const char *name);
/*
* @brief DEFINITIONS word implementation (kernel bootstrap)
* @param vm Pointer to the virtual machine instance
*/
void vocabulary_word_definitions(VM *vm);
/*
* @brief FORTH word implementation - selects FORTH vocabulary
* @param vm Pointer to the virtual machine instance
*/
void vocabulary_word_forth(VM *vm);
/*
* @brief Free this VM's vocabulary search indexes (vm_cleanup())
* @details FABRIC-3.10.8 K-8: the CONTEXT and FORTH first-character bucket
* arrays (vm->vocab.ctx_fc / forth_fc) were never freed -- about
* 3.4 KB left behind by every VM that died.
* @param vm Pointer to the virtual machine instance
*/
void vocabulary_free_indexes(VM *vm);
#endif /* VOCABULARY_WORDS_H */