<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>TB releases</title>
  <subtitle>Release notes for the TB programming language.</subtitle>
  <id>https://code.tanisha.ceo/releases</id>
  <link rel="self" type="application/atom+xml" href="https://code.tanisha.ceo/releases.xml"/>
  <link rel="alternate" type="text/html" href="https://code.tanisha.ceo/releases"/>
  <updated>2026-10-31T00:00:00Z</updated>
  <author><name>TB</name></author>
  <entry>
    <title>TB 3.2.0</title>
    <id>https://code.tanisha.ceo/releases#v3.2.0</id>
    <link rel="alternate" type="text/html" href="https://code.tanisha.ceo/releases#v3.2.0"/>
    <updated>2026-10-31T00:00:00Z</updated>
    <summary>A faster engine, a profiler, an event loop and process workers for concurrency, streaming for files of any size, Mach-O and much more of YARA, Sigma correlations, official ATT&amp;CK data, debugging from VS Code, and a playground that never freezes the page.</summary>
    <content type="html">      &lt;li class=&quot;rel&quot; id=&quot;v3.2.0&quot;&gt;
        &lt;div class=&quot;rel-meta&quot;&gt;
          &lt;h2 class=&quot;rel-version&quot;&gt;&lt;a href=&quot;https://code.tanisha.ceo/releases#v3.2.0&quot;&gt;TB 3.2.0&lt;/a&gt;&lt;/h2&gt;
          &lt;time datetime=&quot;2026-10-31&quot;&gt;31 October 2026&lt;/time&gt;
          &lt;p class=&quot;rel-badges&quot;&gt;&lt;span class=&quot;rel-badge rel-minor&quot;&gt;Minor&lt;/span&gt;&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;rel-body&quot;&gt;
          &lt;p class=&quot;rel-summary&quot;&gt;A faster engine, a profiler, an event loop and process workers for concurrency, streaming for files of any size, Mach-O and much more of YARA, Sigma correlations, official ATT&amp;amp;CK data, debugging from VS Code, and a playground that never freezes the page.&lt;/p&gt;
          &lt;h3 class=&quot;rel-h rel-h-added&quot;&gt;Added&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;A faster engine: code that runs often is translated into a quicker form, more than twice as fast as TB 3.0 on the benchmark set. &lt;code&gt;TB_JIT=off&lt;/code&gt; turns it off.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;tb profile&lt;/code&gt; shows where a program spends its time, per function and per line, with &lt;code&gt;--html&lt;/code&gt; for a flame graph and a list of the largest values.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;parallel.loop&lt;/code&gt; runs &lt;code&gt;async fn&lt;/code&gt; tasks, servers and network calls on one event loop, holding thousands of connections without a thread each. &lt;code&gt;parallel.group&lt;/code&gt; and &lt;code&gt;parallel.timeout&lt;/code&gt; cancel work cleanly.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;parallel.processes&lt;/code&gt; spreads CPU-heavy work across processes, with &lt;code&gt;parallel.shared_queue&lt;/code&gt; to pass values between them.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;logs.stream&lt;/code&gt;, &lt;code&gt;logs.each&lt;/code&gt;, &lt;code&gt;pcap.each&lt;/code&gt; and &lt;code&gt;evtx.each&lt;/code&gt; read files of any size with flat memory, and &lt;code&gt;.gz&lt;/code&gt; and &lt;code&gt;.zip&lt;/code&gt; files are read directly.&lt;/li&gt;
            &lt;li&gt;The &lt;code&gt;macho&lt;/code&gt; library reads macOS executables; &lt;code&gt;pe&lt;/code&gt; adds imphash, the Rich header, resources and code-signature details; &lt;code&gt;elf&lt;/code&gt; adds symbol versions and a hardening report. file-inspector shows all of them.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;scan&lt;/code&gt; accepts much more of the YARA language: &lt;code&gt;xor&lt;/code&gt;, &lt;code&gt;base64&lt;/code&gt;, &lt;code&gt;wide&lt;/code&gt; and &lt;code&gt;nocase&lt;/code&gt; regexes, counts and offsets, integer readers, loops and the &lt;code&gt;pe&lt;/code&gt;, &lt;code&gt;elf&lt;/code&gt; and &lt;code&gt;math&lt;/code&gt; modules.&lt;/li&gt;
            &lt;li&gt;Sigma correlation rules and &lt;code&gt;| near&lt;/code&gt; convert for Splunk, KQL and the new ES|QL backend, with field maps for more Sentinel tables.&lt;/li&gt;
            &lt;li&gt;Official MITRE ATT&amp;amp;CK data (version 20.0), and new intel providers (AlienVault OTX, GreyNoise, Shodan) and SIEM senders (QRadar, Chronicle).&lt;/li&gt;
            &lt;li&gt;Editor support: rename and find references across files, quick fixes, organise imports, &lt;code&gt;[fmt]&lt;/code&gt; options in &lt;code&gt;tb.toml&lt;/code&gt;, and debugging from VS Code through &lt;code&gt;tb debug --dap&lt;/code&gt;.&lt;/li&gt;
            &lt;li&gt;Desktop apps accept files dropped on the window and show a tray icon on Windows and macOS; every control can be reached with Tab.&lt;/li&gt;
            &lt;li&gt;The playground and Run buttons run in a background worker: output appears as it is printed, Stop works at once, and &lt;code&gt;ask()&lt;/code&gt; reads answers inline.&lt;/li&gt;
          &lt;/ul&gt;
          &lt;h3 class=&quot;rel-h rel-h-changed&quot;&gt;Changed&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;code&gt;evtx&lt;/code&gt; reads real Windows logs the way Windows shows them: &lt;code&gt;record_id&lt;/code&gt; is the event&#x27;s own record ID and empty values are kept. Damaged chunks and records in slack space can be recovered with &lt;code&gt;{&quot;recover&quot;: true}&lt;/code&gt;.&lt;/li&gt;
            &lt;li&gt;The legacy ATT&amp;amp;CK tactic name &lt;code&gt;defense-evasion&lt;/code&gt; covers both of its v20 successors, Stealth and Defense Impairment.&lt;/li&gt;
          &lt;/ul&gt;
          &lt;h3 class=&quot;rel-h rel-h-security&quot;&gt;Security&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;Hostile files and rules are bounded: packet captures, PE, Mach-O, EVTX and compressed logs have size and time limits, and YARA refuses patterns that could run for minutes.&lt;/li&gt;
            &lt;li&gt;Sigma field names are checked and quoted, so a rule can&#x27;t add commands to a converted query.&lt;/li&gt;
            &lt;li&gt;API keys and tokens are never sent on to another site when a server redirects.&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;
      &lt;/li&gt;</content>
  </entry>
  <entry>
    <title>TB 3.1.0</title>
    <id>https://code.tanisha.ceo/releases#v3.1.0</id>
    <link rel="alternate" type="text/html" href="https://code.tanisha.ceo/releases#v3.1.0"/>
    <updated>2026-10-31T00:00:00Z</updated>
    <summary>Named inputs for standard-library functions, packet-capture stream reassembly with HTTP file extraction, seven more log formats for security teams, and clearer messages across the tools.</summary>
    <content type="html">      &lt;li class=&quot;rel&quot; id=&quot;v3.1.0&quot;&gt;
        &lt;div class=&quot;rel-meta&quot;&gt;
          &lt;h2 class=&quot;rel-version&quot;&gt;&lt;a href=&quot;https://code.tanisha.ceo/releases#v3.1.0&quot;&gt;TB 3.1.0&lt;/a&gt;&lt;/h2&gt;
          &lt;time datetime=&quot;2026-10-31&quot;&gt;31 October 2026&lt;/time&gt;
          &lt;p class=&quot;rel-badges&quot;&gt;&lt;span class=&quot;rel-badge rel-minor&quot;&gt;Minor&lt;/span&gt;&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;rel-body&quot;&gt;
          &lt;p class=&quot;rel-summary&quot;&gt;Named inputs for standard-library functions, packet-capture stream reassembly with HTTP file extraction, seven more log formats for security teams, and clearer messages across the tools.&lt;/p&gt;
          &lt;h3 class=&quot;rel-h rel-h-added&quot;&gt;Added&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;Standard-library functions take named inputs, like functions you write: &lt;code&gt;parallel.map(scan, hosts, workers = 8)&lt;/code&gt;, &lt;code&gt;round(x, digits = 2)&lt;/code&gt;. A misspelled name gets a &quot;Did you mean&quot; hint, and &lt;code&gt;tb check&lt;/code&gt; and the language server know the names too.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;pcap.streams&lt;/code&gt; reassembles TCP connections (out-of-order, repeated and missing segments), &lt;code&gt;pcap.defragment&lt;/code&gt; rebuilds fragmented IPv4 and IPv6 packets, and &lt;code&gt;pcap.http_exchanges&lt;/code&gt; and &lt;code&gt;pcap.http_objects&lt;/code&gt; pair HTTP requests with responses and pull out transferred files with their SHA-256 and MD5. The pcap-triage app lists files sent over HTTP.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;logs.read&lt;/code&gt; recognises Zeek (TSV and JSON), Suricata EVE, AWS CloudTrail, Okta System Log, Microsoft 365 audit logs (JSON and CSV), CEF and LEEF, and gives Sysmon events common field names such as &lt;code&gt;process&lt;/code&gt;, &lt;code&gt;command_line&lt;/code&gt; and &lt;code&gt;hashes&lt;/code&gt;.&lt;/li&gt;
            &lt;li&gt;Descriptions for Sysmon events and PowerShell script and module logging (4103, 4104) when reading EVTX files.&lt;/li&gt;
            &lt;li&gt;A &lt;code&gt;globals&lt;/code&gt; command in &lt;code&gt;tb debug&lt;/code&gt;.&lt;/li&gt;
            &lt;li&gt;JSON parse errors carry &lt;code&gt;data_line&lt;/code&gt; and &lt;code&gt;data_column&lt;/code&gt;, so a program can say where a config file is broken.&lt;/li&gt;
          &lt;/ul&gt;
          &lt;h3 class=&quot;rel-h rel-h-changed&quot;&gt;Changed&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;code&gt;locals&lt;/code&gt; in &lt;code&gt;tb debug&lt;/code&gt; shows only the current function&#x27;s inputs and variables.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;tb add&lt;/code&gt; prints the short import line, such as &lt;code&gt;import &quot;tb-tables&quot; as tb_tables&lt;/code&gt;.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;let a, b = 0, 1&lt;/code&gt; explains how to write it: &lt;code&gt;let a, b = [0, 1]&lt;/code&gt;.&lt;/li&gt;
          &lt;/ul&gt;
          &lt;h3 class=&quot;rel-h rel-h-fixed&quot;&gt;Fixed&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;Sigma rules converted to KQL use real columns of Microsoft Sentinel&#x27;s &lt;code&gt;Syslog&lt;/code&gt; table, reading the user, address and action out of &lt;code&gt;SyslogMessage&lt;/code&gt;, and filter on the auth facility.&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;
      &lt;/li&gt;</content>
  </entry>
  <entry>
    <title>TB 3.0.0</title>
    <id>https://code.tanisha.ceo/releases#v3.0.0</id>
    <link rel="alternate" type="text/html" href="https://code.tanisha.ceo/releases#v3.0.0"/>
    <updated>2026-10-27T00:00:00Z</updated>
    <summary>The biggest TB release so far: classes, pattern matching, generators and tasks in the same friendly language, a bytecode virtual machine, a full set of developer tools and 43 standard libraries. Read What&#x27;s new in TB 3.0 for examples you can run.</summary>
    <content type="html">      &lt;li class=&quot;rel&quot; id=&quot;v3.0.0&quot;&gt;
        &lt;div class=&quot;rel-meta&quot;&gt;
          &lt;h2 class=&quot;rel-version&quot;&gt;&lt;a href=&quot;https://code.tanisha.ceo/releases#v3.0.0&quot;&gt;TB 3.0.0&lt;/a&gt;&lt;/h2&gt;
          &lt;time datetime=&quot;2026-10-27&quot;&gt;27 October 2026&lt;/time&gt;
          &lt;p class=&quot;rel-badges&quot;&gt;&lt;span class=&quot;rel-badge rel-major&quot;&gt;Major&lt;/span&gt;&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;rel-body&quot;&gt;
          &lt;p class=&quot;rel-summary&quot;&gt;The biggest TB release so far: classes, pattern matching, generators and tasks in the same friendly language, a bytecode virtual machine, a full set of developer tools and 43 standard libraries. Read &lt;a href=&quot;https://code.tanisha.ceo/whats-new.html&quot;&gt;What&#x27;s new in TB 3.0&lt;/a&gt; for examples you can run.&lt;/p&gt;
          &lt;h3 class=&quot;rel-h rel-h-added&quot;&gt;Added&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;&lt;code&gt;class&lt;/code&gt; with fields, methods, &lt;code&gt;static&lt;/code&gt; members, &lt;code&gt;extends&lt;/code&gt; and &lt;code&gt;super&lt;/code&gt;, plus &lt;code&gt;enum&lt;/code&gt; and &lt;code&gt;match&lt;/code&gt; with value, range, list, map, type and class patterns.&lt;/li&gt;
            &lt;li&gt;Default, named and &lt;code&gt;...rest&lt;/code&gt; arguments, lambdas, destructuring, spread, &lt;code&gt;const&lt;/code&gt;, and &lt;code&gt;if ... then ... else&lt;/code&gt; as an expression.&lt;/li&gt;
            &lt;li&gt;Whole numbers and fractions kept apart, hex and binary literals, format specs in f-strings, ranges, slices and a &lt;code&gt;bytes&lt;/code&gt; type.&lt;/li&gt;
            &lt;li&gt;Errors with a kind (&lt;code&gt;catch err: ParseError&lt;/code&gt;), &lt;code&gt;finally&lt;/code&gt;, &lt;code&gt;defer&lt;/code&gt;, &lt;code&gt;assert&lt;/code&gt;, generators with &lt;code&gt;yield&lt;/code&gt;, and tasks with &lt;code&gt;async fn&lt;/code&gt; and &lt;code&gt;await&lt;/code&gt;.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;export&lt;/code&gt; and &lt;code&gt;from ... import&lt;/code&gt; for modules.&lt;/li&gt;
            &lt;li&gt;A bytecode virtual machine that runs programs faster; the tree-walking engine stays available with &lt;code&gt;TB_ENGINE=tree&lt;/code&gt;.&lt;/li&gt;
            &lt;li&gt;Developer tools: &lt;code&gt;tb fmt&lt;/code&gt;, &lt;code&gt;tb check&lt;/code&gt;, &lt;code&gt;tb debug&lt;/code&gt;, &lt;code&gt;tb test --coverage&lt;/code&gt;, &lt;code&gt;tb doc&lt;/code&gt;, &lt;code&gt;tb build&lt;/code&gt;, &lt;code&gt;tb lsp&lt;/code&gt; and a VS Code extension.&lt;/li&gt;
            &lt;li&gt;Packages: &lt;code&gt;tb add&lt;/code&gt;, &lt;code&gt;tb publish&lt;/code&gt; and the &lt;a href=&quot;https://code.tanisha.ceo/packages.html&quot;&gt;TB Package Index&lt;/a&gt;.&lt;/li&gt;
            &lt;li&gt;23 new libraries, for 43 in all, covering binary formats, packet captures, SIEM queries, threat intelligence, data and networking.&lt;/li&gt;
            &lt;li&gt;New desktop and security apps in the &lt;a href=&quot;https://code.tanisha.ceo/examples.html&quot;&gt;examples gallery&lt;/a&gt;.&lt;/li&gt;
          &lt;/ul&gt;
          &lt;h3 class=&quot;rel-h rel-h-breaking&quot;&gt;Breaking&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;New reserved words (&lt;code&gt;class&lt;/code&gt;, &lt;code&gt;match&lt;/code&gt;, &lt;code&gt;from&lt;/code&gt;, &lt;code&gt;is&lt;/code&gt;, &lt;code&gt;const&lt;/code&gt; and others) can&#x27;t be used as names any more; TB suggests another name.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;/&lt;/code&gt; always gives an exact fraction; it still displays as before.&lt;/li&gt;
            &lt;li&gt;Errors raised by libraries now have specific kinds. See &lt;a href=&quot;https://code.tanisha.ceo/migration.html&quot;&gt;Moving from 2.x&lt;/a&gt; for every change and its fix.&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;
      &lt;/li&gt;</content>
  </entry>
  <entry>
    <title>TB 2.0.1</title>
    <id>https://code.tanisha.ceo/releases#v2.0.1</id>
    <link rel="alternate" type="text/html" href="https://code.tanisha.ceo/releases#v2.0.1"/>
    <updated>2026-10-26T00:00:00Z</updated>
    <summary>A documentation release with no language changes.</summary>
    <content type="html">      &lt;li class=&quot;rel&quot; id=&quot;v2.0.1&quot;&gt;
        &lt;div class=&quot;rel-meta&quot;&gt;
          &lt;h2 class=&quot;rel-version&quot;&gt;&lt;a href=&quot;https://code.tanisha.ceo/releases#v2.0.1&quot;&gt;TB 2.0.1&lt;/a&gt;&lt;/h2&gt;
          &lt;time datetime=&quot;2026-10-26&quot;&gt;26 October 2026&lt;/time&gt;
          &lt;p class=&quot;rel-badges&quot;&gt;&lt;span class=&quot;rel-badge rel-patch&quot;&gt;Patch&lt;/span&gt;&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;rel-body&quot;&gt;
          &lt;p class=&quot;rel-summary&quot;&gt;A documentation release with no language changes.&lt;/p&gt;
          &lt;h3 class=&quot;rel-h rel-h-changed&quot;&gt;Changed&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;Sample programs and documentation are neutral and ready for everyone.&lt;/li&gt;
            &lt;li&gt;The first program is now &lt;code&gt;welcome.tb&lt;/code&gt;, a short tour of TB.&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;
      &lt;/li&gt;</content>
  </entry>
  <entry>
    <title>TB 2.0.0</title>
    <id>https://code.tanisha.ceo/releases#v2.0.0</id>
    <link rel="alternate" type="text/html" href="https://code.tanisha.ceo/releases#v2.0.0"/>
    <updated>2026-10-26T00:00:00Z</updated>
    <summary>TB becomes a real language for desktop apps and security work. This version was never offered as a download; 2.0.1, released the same day, was the first public 2.x release.</summary>
    <content type="html">      &lt;li class=&quot;rel&quot; id=&quot;v2.0.0&quot;&gt;
        &lt;div class=&quot;rel-meta&quot;&gt;
          &lt;h2 class=&quot;rel-version&quot;&gt;&lt;a href=&quot;https://code.tanisha.ceo/releases#v2.0.0&quot;&gt;TB 2.0.0&lt;/a&gt;&lt;/h2&gt;
          &lt;time datetime=&quot;2026-10-26&quot;&gt;26 October 2026&lt;/time&gt;
          &lt;p class=&quot;rel-badges&quot;&gt;&lt;span class=&quot;rel-badge rel-major&quot;&gt;Major&lt;/span&gt;&lt;span class=&quot;rel-badge rel-unpublished&quot;&gt;Not published&lt;/span&gt;&lt;/p&gt;
        &lt;/div&gt;
        &lt;div class=&quot;rel-body&quot;&gt;
          &lt;p class=&quot;rel-summary&quot;&gt;TB becomes a real language for desktop apps and security work. This version was never offered as a download; 2.0.1, released the same day, was the first public 2.x release.&lt;/p&gt;
          &lt;h3 class=&quot;rel-h rel-h-added&quot;&gt;Added&lt;/h3&gt;
          &lt;ul&gt;
            &lt;li&gt;Maps, methods, f-strings, modules and &lt;code&gt;import&lt;/code&gt;.&lt;/li&gt;
            &lt;li&gt;&lt;code&gt;try&lt;/code&gt;, &lt;code&gt;catch&lt;/code&gt; and &lt;code&gt;throw&lt;/code&gt; for error handling.&lt;/li&gt;
            &lt;li&gt;Twenty standard libraries, including a desktop GUI, logs, detection rules, IOCs, hashing, networking and threat intelligence.&lt;/li&gt;
            &lt;li&gt;A Windows installer and a set of ready-made security apps.&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/div&gt;
      &lt;/li&gt;</content>
  </entry>
</feed>
