all repos — hex @ 0b4f78d3ff22787d5629f09861f21c5a224432f4

A tiny, minimalist, slightly-esoteric concatenative programming lannguage.

CHANGELOG.md

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
<article>
    <h2>Changelog</h2>
    <ul>
<li><a href="#v0.6.0">v0.6.0</a></li>
<li><a href="#v0.5.0">v0.5.0</a></li>
<li><a href="#v0.4.1">v0.4.1</a></li>
<li><a href="#v0.4.0">v0.4.0</a></li>
<li><a href="#v0.3.0">v0.3.0</a></li>
<li><a href="#v0.2.0">v0.2.0</a></li>
<li><a href="#v0.1.0">v0.1.0</a></li>
</ul>
<h3 id="v0.6.0">v0.6.0 &mdash; 2025-11-09</h3>

<h4>Breaking Changes</h4>
<ul>
    <li>Removed <code>debug</code> symbol.</li>
</ul>

<h4>New Features</h4>
<ul>
    <li>Added symbol <a href="https://hex.2c.fyi/spec#timestamp-symbol">timestamp</a>.</li>
    <li>Implemented the possibility to load additional <code>.hex</code> or <code>.hbx</code> files at startup by using the <code>-l, --load</code>
        option.
    </li>
    <li>Implemented a <code>utils.hex</code> library as part of the <a href="https://hex.2c.fyi/lib/">Standard Library</a>,
        containing additional utility symbols (loaded automatically in the playground).</li>
</ul>

<h4>Fixes</h4>
<ul>
    <li>Fixed some documentation typos and inaccuracies.</li>
    <li>Improved memory management</li>
</ul>

<h4>Chores</h4>
<ul>
    <li>Added tests for <code>utils.hex</code></li>
    <li>Implemented a basic <code>doc.hex</code> script to generate reference documentation from hex files.</li>
</ul>
<h3 id="v0.5.0">v0.5.0 &mdash; 2025-04-08</h3>

<h4>Breaking Changes</h4>
<ul>
    <li>Renamed <code>pop</code> to <a href="https://hex.2c.fyi/spec#drop-symbol">drop</a>.</li>
    <li>Renamed <code>replace</code> to <a href="https://hex.2c.fyi/spec#sub-symbol">sub</a>.</li>
    <li><a href="https://hex.2c.fyi/spec#eval-symbol">!</a> now requires an extra string on the stack to be used as the file name/identifier in stack traces.</li>
</ul>

<h4>Fixes</h4>
<ul>
    <li>Fixed some documentation typos and inaccuracies.</li>
    <li>Fixed incorrect bytecode processing for quotations with more than 127 items.</li>
</ul>

<h4>Chores</h4>
<ul>
    <li>Added more tests.</li>
</ul>
<h3 id="v0.4.1">v0.4.1 &mdash; 2025-01-07</h3>

<h4>Fixes</h4>
<ul>
    <li>Addressed segmentation fault when interpreting bytecode on Windows (filename was not populated for symbol
        position).</li>
    <li>Ensured that newlines are correctly processed on Windows.</li>
    <li>Renamed the <code>operator</code> property in <code>hex_item_t</code> to <code>is_operator</code> to avoid
        conflicts in C++ code (operator is a reserved keyword).</li>
</ul>
<h3 id="v0.4.0">v0.4.0 &mdash; 2025-01-03</h3>

<h4>Breaking Changes</h4>
<ul>
    <li>Removed the native symbol <code>when</code>.</li>
    <li>Bytecode: some opcodes changed values; programs compiled with tbe previous version must be recompiled.</li>
</ul>

<h4>New Features</h4>
<ul>
    <li>Added symbol <a href="https://hex.2c.fyi/spec#debug-symbol">debug</a> to dequote a quotation in debug mode.</li>
    <li>The registry has been reimplemented as a hash table that can store up to 4096 symbols.</li>
</ul>

<h4>Fixes</h4>
<ul>
    <li>Improved string escaping/unescaping.</li>
    <li>Values bound to symbols are deep-copied before being pushed on the stack.</li>
    <li>Action quotations are now deep-copied in <a href="https://hex.2c.fyi/spec#while-symbol">while</a> and <a href="https://hex.2c.fyi/spec#map-symbol">map</a> symbols.</li>
</ul>

<h4>Chores</h4>
<ul>
    <li>Updated Vim syntax highlighting (<code>hex.vim</code>).</li>
</ul>
<h3 id="v0.3.0">v0.3.0 &mdash; 2024-12-25</h3>

<h4>Breaking Changes</h4>
<ul>
    <li>Removed the native symbols <code>filter</code>, <code>clear</code>, and <code>each</code>.</li>
    <li>Bytecode: some opcodes changed values; programs compiled with tbe previous version must be recompiled.</li>
</ul>

<h4>New Features</h4>
<ul>
    <li>Added symbol <a href="https://hex.2c.fyi/spec#operator-symbol">::</a> to define operators (immediately-dequoted quotations).</li>
    <li>Added symbol <a href="https://hex.2c.fyi/spec#symbols-symbol">symbols</a> to get a list of all stored symbols</li>
    <li>Added symbol <a href="https://hex.2c.fyi/spec#throw-symbol">throw</a> to throw an error.</li>
    <li>Increased the size of the STDIN buffer to 16Kb.</li>
</ul>

<h4>Fixes</h4>
<ul>
    <li><a href="https://hex.2c.fyi/spec#lessthanequal-symbol"><=</a> now returns correct results.</li>
</ul>

<h4>Chores</h4>
<ul>
    <li>Updated Vim syntax highlighting (<code>hex.vim</code>).</li>
</ul>
<h3 id="v0.2.0">v0.2.0 &mdash; 2024-12-20</h3>

<h4>New Features</h4>
<ul>
    <li>Implemented a virtual machine with a bytecode compiler and interpreter.</li>
    <li><a href="https://hex.2c.fyi/spec#read-symbol">read</a>, <a href="https://hex.2c.fyi/spec#write-symbol">write</a>, <a href="https://hex.2c.fyi/spec#append-symbol">append</a> now support reading and writing from/to binary files as well.</li>
    <li><a href="https://hex.2c.fyi/spec#eval-symbol">!</a> can now evaluate a quotation of integers as hex bytecode.</li>
    <li>Increased maximum stack size to 256 items.</li>
    <li>Improved and consolidated error messages and debug messages.</li>
</ul>

<h4>Fixes</h4>
<ul>
    <li>Ensured that <a href="https://hex.2c.fyi/spec#dec-symbol">dec</a> is able to print negative integers in decimal format.</li>
    <li>Ensured that symbol identifiers cannot be longer than 256 characters.</li>
    <li>Ensured that all symbols are correctly added to the stack trace.</li>
</ul>

<h4>Chores</h4>
<ul>
    <li>Split the source code to different files, and now relying on an <a
            href="https://github.com/h3rald/hex/blob/master/scripts/amalgamate.sh">amalgamate.sh</a> script to
        concatenate them together before compiling</li>
</ul>
<h3 id="v0.1.0">v0.1.0 &mdash; 2024-12-14</h3>

<p>Initial release, featuring:</p>
<ul>
    <li>A multi-platform executable for the <em>hex</em> interpreter.</li>
    <li>Integrated REPL.</li>
    <li>Integrated help and manual.</li>
    <li>Debug mode.</li>
    <li>0x40 (64) native symbols.</li>
    <li>Support for 32bit hexadecimal integers, strings, and quotations (lists).</li>
    <li>A complete <a href="https://hex.2c.fyi">web site</a> with more documentation and even an interactive playground.
    </li>
</ul>

</article>