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
app.json adds the official creation period configuration window.transparent, enabling the native window and WebView transparent background at the same time; the transparent window must hide the system title bar, supports drawing any rounded corners and translucent interfaces by HTML/CSS or PNG, initialization boot page, official website documentation, AI development knowledge base and screen tool example synchronization support
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
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
app.file_associations: Packaged applications can register extensions under the current user by default to open commands, file type icons and customized right-click menus; Bundle applications will retain the associated file path as a startup parameter, and the development mode does not write system associations
.md Double-click to open and "Open with M++" right-click menu
2026.08.01
No provider set panic and cause the program to crash because the Rustls crypto provider has not yet been initialized
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
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.
/= was split into / and = by the lexer, and completed ten operators, all writable targets, type rules, evaluation order and single side effect regression matrix
/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.
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
/api/ext/<name>, /api/ext/<name>/<version>, /api/ext/<name>/download/<version> extension library API, and stores SQLite 1.0.0 official extension into web/db/ext/
/ext extension library list page and /ext/<name> details page, display extension version, permissions, developer, source code address and installation command
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
app.storage WebView storage policy, isolates persistent profiles by application name by default, supports private dual-open independent login state and global old version shared profile
dev.devtools=true The WebView developer tool can be opened through F12, Ctrl+Shift+I or window.bt.window.open_devtools()
index.html entry loaded through bt://app/, and entry HTML fallback is provided for the path without extension, compatible with Vue/Vite and other SPA history routing root path deployment
index.html automatically generates the default app.json, the resource list is supplemented with assets/** to avoid missing scripts and styles after Vite's default build product is packaged
- 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
@/data directory to avoid the database parent directory not existing when the demo is run for the first time.
examples/extensions/sqlite shared WASM SQLite extension library, covering sqlite_open, one/all/exec/transaction/close and chained query().bind(), and use Rust single test to verify WAL, busy_timeout, concurrent reading, result upper limit, BLOB/NULL/empty boundary and invalidation after close
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
lifecycle=dispose succeeds, the old handle will become invalid
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
2026.06.26
lifecycle: "dispose" life cycle meta information, supporting close() / dispose() Release the object handle after success to avoid uncontrolled growth of extended objects in long-term operation
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
BT.stats() snapshot sequence and 1h/8h/24h portraits, and adds examples/compat/ semantic compatibility regression
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
BT.stats().permission configuration snapshot
static.cache_control can be written to the cache strategy, static.chunk_size can control the chunked read size
web.send_file() / send_file() file direct out capability, reuse chunked file response, ETag, Last-Modified and Range to avoid large responses entering the dynamic response string at one time
examples/net-stress-*.bt stress test script is added to cover batch messages and disconnection reconnection scenarios
- 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
- 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
- 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
- The release pipeline is added to Linux musl build, static link verification and openssl-sys Dependency guard
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
let is only used for variable declaration and cannot be used for constant definition
use Import fields are processed by variable binding. Both explicit imports and full imports comply with variable naming rules, and duplicates are removed use obj{*} syntax
~ bitwise negation operator
for key value in obj is equivalent to for key, value in obj
for i in count step step_value, fixed loop count times and let the variables increment by steps
- 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
- print, println, echo, exit, pause actively output empty is displayed as empty, JSON serialization still outputs null
for (name age) in users to directly read the fields of each round of value
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.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
2026.05.09
- Rewritten lexer to align with Rust
- Rewritten syntax analysis AST
- Add bytecode mechanism to improve performance
- Improve error reporting
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
2024.11.24
- Add reqwest standard library
- Add process standard library
lines function in fs standard library
- 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
is_null system function, used to determine whether the data is Null
is_empty system function, used to determine whether the data is null
rand system function, used to generate random numbers
Env and Envs system environment variables
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
(title,content,time) = article
eval to system functions
http standard library adds session
http standard library adds cookie
file standard library is officially renamed fs
fs standard library adds move function
http standard library adds files for file upload, supports multiple file uploads
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
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
Object object can only be of the String type BUG
to_number prototype function for the string type
to_number prototype function for the numeric type
to_string prototype function to the array type
- 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
extension used to get the file suffix
+= ^=, etc.
2024.10.22
{% %} tag to the backslash string for executing BT code
- 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 ? :
parse
- 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.15
- Thanks to Lao Huang, for recognizing the excellent Salvo, BT integrates Web services and enters the Web field
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
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