Release Notes
BT is updated continuously. If you encounter a problem, please leave feedback through the website.

v1.1.3

2026.08.26

- bt_app New BTR software format: pack Generate .btr that does not include runtime. run/info supports explicit paths and direct path abbreviations. Windows associate can register the current user and double-click to open it; build shares compressed resource containers, version descriptions, path conflicts and compression bomb upper limit checks with BTR. External BTR directly reuses file handles to decompress on demand and is compatible with old exe Bundle

- Desktop API new window.bt.app.info(path) and run(path, args) are respectively used to read BTR title/icon/version information without executing code, and to create an isolated software process using the current runtime; app.args() only returns business parameters, and external BTR does not register its business file association; the Windows main window re-transmits WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS explicitly to restore CDP remote debugging acceptance

- app.json added stable app.id, used for WebView profile, credentials, application data and file associated identity after explicit configuration. When omitted, it will continue to be compatible with the old data location by name; the general toolbar is upgraded to a data-driven slot with up to nine items, which can add, sort and remove .btr, .exe and .lnk, Alt+1 to Alt+9 Always execute the current position

- Fixed the problem of bt_app main window exposing Windows non-client area black lines and default whiteboard before the first frame of WebView: the window is changed to borderless, no projection and hidden creation, the built-in animation is displayed when the non-transparent page is loaded, and the final border and projection of the project configuration are applied after the first frame is completed; the transparent window remains hidden until the first frame is completed

2026.08.23

- Fix the top of Windows untitled bar window when Tauri native shadow is enabled For the problem of 1px white line, the shadow is turned off uniformly at the frame layer; the problem of the floating toolbar still being docked at the old coordinates after being dragged from the left to the right half of the screen is fixed, and the 10px docking regression acceptance on the left and right sides is added

2026.08.22

- bt_app adds window.bt.window.set_position() and placement() logical pixel window layout API; the screen tool example has been redone to an untitled floating toolbar that can be arranged horizontally or vertically, supporting nearby snapping after dragging, 10px docking, delayed sliding into the edge, touching the edge to call out, and three-point menu switching direction, hiding to the tray or exiting

- Fixed the emit_to event of the bt_app global shortcut key incorrectly using DOM monitoring, resulting in the interface showing that the registration is successful but the callback cannot be triggered; the shortcut key will now wait for Tauri Complete the registration after the event listener is ready. After the main window is closed to the tray, the screen straw and frame selection screenshots can still be evoked

- bt_app adds window.bt.screen.pick_color(), capture_area() and window.bt.shortcut global shortcut key API: use Tauri transparent mask to uniformly draw the screen straw and single-monitor frame selection interface, the color value can be written directly to the text clipboard, and the screenshot is in RGBA Directly write to the system image clipboard, and add independent screen permissions, mask ACL, resource upper limit and examples/desktop-screen-tools complete example

2026.08.19

- bt_app desktop API adds window.bt.window.set_background_color('#RRGGBB'), synchronizes native window, WebView and Windows untitled bar DWM edge color; fixes M++ appearing 1px at the top of Windows 11 The white line problem is solved, and the bottom connecting foot of the label is changed to a native rounded overlay to eliminate the gradient mask aliasing

2026.08.18

- bt_app's app.file_associations adds optional icon: file type exclusive .ico will be written to the exe independent PE during build Resource group, the resource manager file icon is separated from the main application icon, and the right-click menu continues to display the application icon; M++ synchronizes the light blue and purple MD multi-size document icon

2026.08.17

- removes the FFI third-party license bypass file: desktop application packaging, official release, FFI CI and release access control will no longer generate, copy, verify or distribute the file, dist/ is restored to only include the application executable file

- The M++ Markdown desktop tool is officially renamed by BTDocs and starts in browse mode by default. It only expands the directory or workspace after opening a Markdown file or folder, and supports .md Double-click to open and "Open with M++" right-click menu

2026.08.01

v1.1.2

2026.08.01

- bt_app application data roots are uniformly migrated to the current user %USERPROFILE%\.<app.name>, and BT_APP_DATA_HOME automated isolation coverage is provided; application credentials are saved and maintained in readable JSON plaintext according to explicit configuration store/has/delete Page boundaries, credential format, ID and size are all verified in the native layer

- BT AI cancels tasks and accumulates 250,000 Token hard stop, adds DeepSeek V4 Flash Responses/Thinking flow adaptation, stateless tool continuation wheel, project task sidebar, visible tool execution timeline, folded thinking, Markdown rendering, and .bt_ai persistence of model configuration, project, conversation, task and memory

v1.1.1

2026.07.19

- Fix the target evaluation order of ordinary attribute/subscript assignments, and the problem that ten kinds of compound assignments do not write back to object fields, dynamic fields, array subscripts, nested properties and class instance fields; the target reference is now only parsed once, and the reading, operation, and write back are strictly performed on the same target

- Implement the prefix and postfix ++ / -- of variables, fields and subscripts, correctly distinguish the old value / new value return semantics, only allow Int/Float; illegal lvalues and constants report errors at compile time, and read-only attributes continue to be explicitly rejected by runtime setters.

- bt_app added a formal desktop production API: support SSE/chunked HTTP and real cancellation, Windows DPAPI Security credentials, normalized workspace atomic file operations, bounded native processes and application-owned data cleaning with double confirmation; long-term App VM uses a fixed 8 MiB thread stack to avoid deep script call overflow; BT AI official website adds /ai/version minimum version interface

- File system library adds fs.real_path(), returns operating system to resolve symbolic links, Windows junction and ..

- Added fs.atomic_write(content, expected_sha256) to the file system library, using atomic replacement of temporary files in the same directory, and rejecting external modification conflicts according to old content SHA-256

2026.07.13

- Added optional ffi Cargo feature, completing the first phase of the native dynamic library standard library: supporting strict complete schema, precise symbol caching, void/i32/u32/ptr parameters and returns, cstr/wstr Input, synchronous calls and explicit shutdown; do not compile FFI dependencies or VM branches when not enabled

- FFI first stage adds permissions and web request rejection boundaries, dynamic library and function cache fixed upper limit, method and pointer invalidation after shutdown, temporary string return pointer rejection, BT_BYTES_LIMIT input constraints and Value layout baseline testing, and provides a cdylib test library to maintain cross-platform compatibility; stage acceptance only runs on Windows, while providing user32 complete signature example

- Complete FFI second phase explicit capabilities: complete i8/i16/i64/u8/u16/u64/isize/usize/f32/f64, support cstr/wstr bounded return copy, 16-byte alignment fixed FfiBuffer, Pointer owner inheritance, shutdown invalidation and BT.stats().ffi minimum resource statistics

- FFI second phase added Buffer number and 64 MiB actual allocated atomic quota, error rollback and App long-term VM shutdown recycling verification, extended cross-platform testlib with millions of cache calls long-running example; limited declaration-free calls remain closed

- Completed FFI third phase limited declaration-free calling and schema return type hints: default Int mapping i32, null/Pointer/Buffer mapping ptr, no schema return is fixed to i32, and the number of parameters and inference types per symbol are locked by the first successful call

- FFI phase 3 added Windows A/W parameter assistance: W export supports UTF-16 String, A export only allows ASCII; Bool, Float, out-of-range Int and unencrypted String are rejected before native calls, user32 GetSystemMetrics is changed to true without schema acceptance

- Completed FFI phase 4 final acceptance: Default release officially includes FFI while retaining --no-default-features minimum core tailoring; Windows x64 Release volume increment of 41,984 bytes and no additional libffi dynamic dependencies, normal execution, million calls, repeated load/close, App shutdown, RSS and visible MessageBoxW smoke all pass

- Complete FFI build tools, dependency licenses, platform acceptance boundaries and final release notes, clean up phase wording in examples

- Fix FFI process-level resource statistics test parallel interference, complete Library, Buffer, schema, function cache, symbols, signatures, 16-argument calls and cstr/wstr boundary regressions; while reducing Windows wide string repeat traversal and cstr return copying

- FFI CI upgraded to final regression, automatically covering App shutdown, explicit and declaration-free million calls, release volume and dynamic dependency checking

2026.07.07

- Added process.suspend() / process.resume(), Windows The managed sub-process tree can be paused and resumed; when bt_app closes the window or hot-reloads the runtime, it will explicitly shut down the long-term VM and wait for resource release to avoid background conversion process legacy

- Optimize process sub-process pipeline upper limit semantics, BT_PROCESS_PIPE_LIMIT changes to limit unread buffering instead of historical cumulative output, new process.pipe_limit(bytes) covers the single process upper limit; process.kill() and Process under Windows The release will try to recursively terminate the child process tree. bt_app exits directly after the pop-up window when WebView2 is missing

- Fixed the problem that the bt_app desktop environment may inherit invalid stdin or pop up a black console window when starting the Windows console child process. The process non-inherit_stdio scene closes stdin and hides the console window by default. Added process.window_hidden() explicit chain configuration

2026.07.05

- Extension manifest.permissions is changed to a string array and only declares the actually required permission capabilities; scaffolding, verification, official website metadata and documents are removed simultaneously. True/false permission object writing method

- SQLite extension library usage is aligned with the MySQL standard library, and the query(sql).bind()/binds().one/all/exec() chained API is exposed. exec() returns rows_affected, last_insert_id, batch and other statistical objects.

- Optimize the bt install official extension remote installation output, display the download progress, SHA-256 checksum and installation completion status

2026.07.04

- Add the official extension library remote installation MVP, support bt install <name> [version] --project <dir> download from the official website metadata .bts, after verifying SHA-256, file size and package manifest, write it into extensions/<name>/<name>-<version>.bts

- Project extension scanning is compatible with extensions/<name>/*.bts subdirectory, while retaining the old extensions/*.bts top-level package loading capability

2026.07.02

- bt_app adds window.bt.app.watch_path() Directory file monitoring capability

- Fixed the problem that app.main=false still requires main.bt when building main.bt but the old resources remains, and the missing old main script resources will be skipped

- Fixed the problem that app.storage=private may still reuse the login state under WebView2, and use a unique temporary for each startup instead data_directory, ensure dual-open process Cookie/localStorage isolation

2026.06.30

- WASM extension Runner enables the Wasmtime compilation cache. After the larger WASM extensions such as SQLite are compiled for the first time, the subsequent process starts and bt ext check can reuse the cache to avoid repeated JIT each time. Compile

- extensions feature is enabled in the default build. bt.exe can directly use bt ext and load the project extensions/*.bts; use --no-default-features instead when a lightweight non-extension build is required.

- Fix the thread local Runner mistakenly used by bt ext build/check/install when verifying the WASM extension of runtime.mode=shared. The problem is that the shared extension will now use the shared WASM module to verify the path. The SQLite extension library can be packaged normally as .bts

- Extended bindings parameter type adds any, which is used for bind(value) that needs to receive multiple BTs Parameters of basic values; any is only used for parameter declaration, not as a return type

- The extended ordinary object return type allows the return of empty, which means there is no object result. The specific extended object return type still maintains the same module and the same type of handle strict verification

2026.06.29

- shared WASM extension enables Wasmtime epoch interrupt, call_timeout_ms will mark the target after timeout worker, trigger WASM trap and rebuild Store/Instance to avoid timeout calls permanently occupying service capacity

- bt-extension-sdk adds optional bts_init, bts_shutdown, bts_stats life cycle helpers. Runner will recognize optional exports and call them in the worker life cycle. Old WASM extensions do not export these functions and remain compatible

- shared extension service statistics are added Snapshots of workers, objects and worker_objects, retaining queued, running, completed, failed, rejected, timed_out and other call statistics

- The shared extension service adds a check for the number of service-level objects and the upper limit of the number of single-worker objects, which exceeds max_objects or max_worker_objects. Return a Chinese error to avoid uncontrolled growth of resident objects

- Added project-level ExtensionService MVP, the WASM extension of runtime.mode=shared will create an independent bounded worker queue, support the entry function to return the original value, reject statistics when the queue is full, and reject new calls after shutdown

- Add optional runtime configuration to the extension manifest, support parsing and verification thread_local / shared mode and resource limits such as workers, queue_limit, call_timeout_ms, idle_ttl_ms, number of objects, and number of calls during execution

- The first version of runtime.mode=shared only allows kind=wasm, and pure BT extensions will be rejected during the manifest verification phase; ordinary WASM extensions still run thread-local Runner, and shared WASM extensions will not silently fall back to thread-local Runner

v1.1.0

2026.06.26

- bt-extension-sdk's ObjectStore adds required read, write and removal helpers. WASM scaffolding generates close() by default and uses type checking and explicit release

- Adds bt-extension-sdk Rust SDK, supports WASM extension explicit registration call ID, BtValueBinary codec, real bts_alloc / bts_free memory release and bts_set_module_id module ID initialization, and run through the chain call after Rust SDK generates .bts

- bt ext new --kind wasm now generates the Rust SDK project skeleton, bt ext build will be skipped target/, .git/, .hg/, .svn/ and node_modules/ avoid typing the build product into .bts

- Added a new extension CLI tool chain to support bt ext new/build/install/info/check to create a local extension project, package .bts and install it into the project extensions/, view package information and reuse runtime verification

- WASM extension adds path_read, path_write, path_dir path capabilities, supports parsing @ and relative paths according to BT path rules, verifies project root boundary, converts to WASI relative path and pre-opens the project directory

2026.06.25

- Adds WASM Runner, supports kind=wasm / bts-wasi-1 extension loading module.wasm, verification ABI export, delayed instantiation, BtValueBinary parameter/result transmission and calc(1).add(2).value() chain call

- Fix the problem that the Web request snapshot will force parsing of the form for ordinary GET or non-form requests, avoid the non-request body route from mistakenly returning 413, and restore the Web publishing benchmark Routing baseline

- Added BtValueBinary codec module, supporting binary ABI of empty, null, bool, int, float, string, bytes, array, object and extended object handles Round trip, and add depth, length and total byte limit

- Added pure BT Runner, support kind=bt / bts-bt-1's restricted export verification, thread local compilation cache, real export function call and object handle method distribution, run through the real pure BT calc(1).add(2).value()

- Added extension manager, Value::ExtensionFunction, Value::ExtObject and VM Distribute access, support startup injection of extension portal, protect portal read-only, and use fake runner to verify calc(1).add(2).value() link

2026.06.24

- Added .bts zip package parsing, manifest.json / bindings.json checksum and extended registry meta information. Currently, only verification and table creation are performed, and extension code will not be executed

- Added extensions Cargo feature and src/extensions compilation boundary to prepare for subsequent .bts package parsing, registry and WASM/WASI backend isolation

2026.06.23

- Added release quality tool chain, providing key examples of automatic regression, end-to-end performance baseline, Web/TCP long-term stability test script, release access control list and CI layering workflow

- Optimize VM Execution and compilation cache: Reduce duplicate cloning of function names in function execution hot paths, file/template compilation cache is changed to eliminate by entry and byte upper limit, and expose hits, failures, eliminations and content fingerprint review statistics in BT.stats().cache

- New request body, header, uploaded file and dynamic response body size boundaries for Web dynamic requests, over-limit requests return 413, to avoid uncontrollable memory occupation by production Web processes

- New transactions for MySQL API: mysql(dsn).begin() returns transaction handle, supports intra-transaction query/bind/all/one/exec/commit/rollback/close/status, and exposes transaction statistics in BT.stats().mysql

- Added optional permission configuration: tighten fs, process, net, HTTP, MySQL, device, env, desktop through BT_PERMISSION_ALLOW and BT_PERMISSION_DENY Ability, desktop will limit bt_app desktop bridge commands and drag-in file events, and expose configuration and rejection times in BT.stats().permission

2026.06.22

- Added bytes binary byte value and modbus protocol auxiliary library, support Modbus RTU/TCP frame construction, parsing and CRC16, serial port and TCP/UDP/WebSocket support explicit Bytes binary reading and writing

- Web The request script is changed to enter the unified I/O blocking pool for execution, and the allow and deny rules of sleep, process, fs, mysql, reqwest, task, and device in the Web context are clarified

- net TCP, UDP, WebSocket background I/O migrated to shared Tokio runtime, added bounded event queue, message size, write queue, number of connections and idle TTL resource boundaries

- Added process-level I/O running boundary, provided shared asynchronous runtime, bounded blocking pool and BT.stats runtime resource statistics

- Completed process sub-process stdout/stderr pipe reading capabilities, added bounded buffer, read block size, default timeout and overflow error

2026.06.20

- Extended lightweight task background task system to support task(fn, ...args), task_all, task_race and Task.on_done completion callback

2026.06.19

- Added lightweight timer functions set_timeout, set_interval and Timer.cancel to support single-threaded callback distribution in CLI resident scripts and desktop long-term VMs

- Fixed the problem that the official website Markdown/FK rendering still calls the old String HTML method, resulting in empty document code content

2026.06.17

- Added lightweight task background task system to support task(fn), Task.await(), Task.done(), Task.result(), adopt snapshot value transfer, independent VM and bounded thread pool

- Fixed the problem that keyword method names cannot be used for dot attribute access, ensuring that chained APIs such as text.match() can be parsed normally

2026.06.16

- Added global static object BT, supporting version, platform, runtime snapshot, environment variable overlay, PATH Operation, capability detection and runtime_id

2026.06.15 - Added try/catch/throw error handling mechanism, supporting error propagation and capture to the upper layer

- Added match expression, supporting sequential matching, default branch and no matching return empty

- The right side of the match branch supports {} Multi-line code block, the return value of the code block is determined by the last statement

- Cargo TLS dependencies are unified changed to Rustls, the sqlx native-tls/OpenSSL compilation path is removed, and Salvo acme/quinn is turned off by default

- The release pipeline is added to Linux musl build, static link verification and openssl-sys Dependency guard

v1.0.9

2026.06.13

- reqwest standard library implements cookie_store, proxy, redirect_policy and real multipart/form-data request body, remove empty placeholder chain method

- reqwest request body is changed to body, json, form, multipart. The last setting takes effect, and the response object removes duplicate text fields

- removes process.stdin_write, process.exit_status and Math.powf and other duplicate alias entries, the official website document only retains the standardized naming

- Fixed the problem of &&, ||, ?? logical operators executing the expression on the right in advance to ensure compliance with the short-circuit evaluation rules

- The official website backend article editor was changed to Markdown The editor supports source code on the left and real-time preview on the right, and removes non-Markdown features such as color, size, label, etc. in the old markup syntax

2026.06.12

2026.06.11

- The math library is changed to a global static Math object, new Math constants, Math.pow, Math.clamp, Math.random and other methods are added, and the math() built-in entrance is removed

- The device standard library removes baudRate, dataBits, stopBits, and serialNumber. The old fields are compatible, and the configuration and return objects are unified using snake_case

- Unify empty/null boundaries: missing fields, out-of-bounds subscripts, not found results and missing parameters return empty, explicit null values and parsing/conversion failures return null

- print, println, echo, exit, pause actively output empty is displayed as empty, JSON serialization still outputs null

- Extended for loop syntax, added for {}, times loop, integer closed interval, ..end, start.., positive integer step and _ discard binding

2026.06.10

- Will Adjust parse_json, parse_radix_int, parse_radix_str to String prototype functions

- Adjust from_char to Number prototype function, and remove string/number related system function entries such as radix and char_code

- Change Array.clone and Object.clone to deep copies to avoid nested arrays and objects continuing to share references

- Fix Object.reverse Semantics, return the reversed new object in object key insertion order

- Added Array.at, Array.insert, Array.remove_at, Array.clear Prototype functions

- Added Object.entries, Object.filter, Object.every, Object.some, Object.find, Object.find_key, Object.update, Object.pick, Object.omit, Object.clear Prototype function

- echo and include support parentheses-free statement form, and add the include_once system function

- file compilation cache key to distinguish the template access mode to avoid template include cache pollution common entry verification

- correct the parsing test assertion when the MySQL DSN password contains @

2026.06.09

- new Mysql.all, mysql.one, mysql.exec new version of VM execution capabilities

- Reconstruct the MySQL execution model, add mysql.binds, mysql.batch, mysql.workers, mysql.sql

- mysql.exec unified support for normal execution, batch execution and INSERT Multi-value insertion optimization

- Support MySQL query results to be converted into BT arrays, objects and values

2026.06.05

- Complete the first version of bt_app desktop API

- Added window.bt.call long-term VM front-end and backend call channel

- Added window.bt.dialog, window.bt.window, window.bt.tray, window.bt.clipboard, window.bt.notify, window.bt.drag, window.bt.app Desktop capabilities

2026.06.04

v1.0.8

2026.05.26

- Added BT App desktop application support

- Added bt_app packaging and running mechanism

- Supported configuring desktop application entrance through app.json

- Added desktop application resource packaging capability

- Added bt:// custom protocol resource loading

- Optimized Web architecture, supporting clearer multi-site and multi-service configuration

- Enhanced Web service configuration capabilities, supporting multi-port, multi-domain name, SSL scenarios

- Added device module

- Added serial port scanning capability

- Added serial port list and basic serial port access capabilities

- Added net network module infrastructure

- Added TCP / UDP / WebSocket communication support

- Optimized the standard library module structure to prepare for subsequent expansion of plug-in capabilities

- Improved runtime resource management and error prompts

v1.0.7

2026.05.09

- Rewritten lexer to align with Rust

- Rewritten syntax analysis AST

- Add bytecode mechanism to improve performance

- Improve error reporting

v1.0.6

2026.04.18

- Optimize code and improve stability

- Add envs system function to obtain system global variables

- Add env system function to obtain user global variables

- Added has_envs system function, used to check whether system variables exist

- Added has_env system function, used to check whether user variables exist

- Added pause system function, which pauses the program and waits for the user to press Enter to continue (for console programs)

- Added echo system function, used to print messages on the console

2026.04.17

- Add compilation caching mechanism to improve performance

- Optimize related codes

- Solve the BUG that WEB service causes memory to continuously increase

2025.05.02

- Optimize library functions

v1.0.5

2024.11.24

- Add reqwest standard library

- Add process standard library

2024.11.16

- Newly added md5 standard library

- Newly added base64 standard library

2024.11.13

- Newly added call system function for function callback

- Added number system function, used to convert to numeric type

- Added string system function, used to convert to string type

- Added float system function, used to convert to floating point type

- Added int system function, used to convert to integer type

- Added array system function for converting to array type

- Added object system function for converting to object type

- Added json system function for converting to JSON string

- Added parse_json system function for parsing JSON string

- Added regex system function, used to convert strings into regular objects

2024.11.12 - Solve the bug of infinite loop caused by smart pointers when generating JSON strings

2024.11.11

- Added math standard library

2024.11.8

- Added arrow functions to support v->v*2 v->{v*2} (v,k)->v*2 (v,k)->{v*2} Several writing methods

2024.11.7 2024.11.6 2024.11.4 - Project configuration adds temporary directory configuration for file upload FILE_TEMP_PATH

2024.11.1

- Adds http standard library, puts old Web-side related variables and functions into http

- Added standard library architecture

2024.10.31

- Added the use keyword, which is used to introduce library functions in the current scope

v1.0.4

2024.10.29

- Solved the bug that caused Exit, Return, Break and Continue to be invalid in some expressions

- Solve the line number error in the error message caused by comments BUG

2024.10.28

- Optimize the class class and support member variable predefinition

- Add a series of object prototype functions

2024.10.27

- Add a exit function to exit the program

- Add a series of object prototype functions

2024.10.26

- Optimize ternary and binary operations

2024.10.25

- Add the # TPL keyword for declaring string templates

- Fix the bug of free assignment of objects

- Optimize the function of converting each data type to string

2024.10.24

- Add the function basename to File to obtain the file name

- Add the function filename to File Used to get the file name

2024.10.23

v1.0.3

2024.10.22

2024.10.19

- Fix the bug caused by backslash in the regular expression

- Enhance the regular expression and add the capture group name setting

2024.10.18

- Officially change the official website domain name to: https://btlang.org

2024.10.15

- Optimize the ternary operator ? :

2024.10.07 - Change the array function structure

- Optimize for loop performance and simplify some detailed code logic

2024.09.22

- Add string function prototype escape_html

- Add string function prototype unescape_html

- Add binary operators ?

2024.09.21

v1.0.2

2024.09.15

2024.05.10

- Thanks to Lao Huang, for recognizing the excellent Salvo, BT integrates Web services and enters the Web field

v1.0.1

2024.02.16

- The core code of the BT language compiler is more complete, and the data type uses Rc smart pointers

2023.09.30

- Due to lack of spare time, I went through a nightmare experience during this period, and finally perfected lexical analysis and syntax analysis, and the performance was greatly improved

2023.06.18

v1.0.0

2022.01.03

- The first version is released, please remember this day

- Implemented semantic analysis of BT language and successfully executed BT script code

2021.04.10

- Thanks to the guidance of Xiuno founder Lao Huang, the first online project of Rust was officially completed, and it also laid a solid foundation for BT language. At this point, lexical analysis and syntax analysis of BT language were implemented

2020.08.26

- Due to memory safety issues, I switched from C to Rust and officially started learning the Rust language. Thanks to teacher Zhang Handong and Xiuno founder Lao Huang

2020.05.09

- for the development of the code highlighting plug-in (used in the BT language official website documentation). It is the first pure front-end code highlighting plug-in in China. It is based on regular expressions and supports multiple languages. It also lays the foundation for the development of BT language

2019.09.09