v0.3.2 (beta) - 13/04/2024 ------------- - Added better support for bash/batch file in the default syntax highlighter. - Added basic syntax highlighting support for R, Cobol, Fortran, Ada, Scala, Dart, Odin, Zig, Nim and Perl in the default syntax highlighter. - Made a separate CSS syntax highlighting routine in the default syntax highlighter. - Added support for Python F-strings in the default syntax highlighter. - Added some animations to tabs, scrollbars and listers. - Added the EOF token type. It is an alternative way to check for the end of the file when retrieving the next token. - Bytes will now issue a notification when a terminal job finishes and the editor is not in focus. - get_file_extension() is now ensured to return the lower-case version of a file extension. - '<-' is now considered a miscellaneous token. - Enhanced the behaviour of close_tab(). - Changed the behaviour of switch_tabs(): now this will switch between the current tab and the most recently visited tab. - For now all blacklisted file extensions are expected to be lower-case. - Sped up some parts of the editor. - Fixed a bug where syntax highlighting would not correctly update when creating a new file. - Fixed a crash related to text navigation/editing. - Fixed some compiler bugs. - Fixed various bugs involving CRLF line endings. - Fixed a crash that would occur when pasting lots of text from the clipboard. - Fixed a bug in align_selection_on_token_at_cursor(). v0.3.1 (beta) - 22/02/2024 - Quick fix ------------- - Added better support for Rust raw string literals in the default syntax highlighter. - Added basic support for assembly, Ruby, Swift, Lua and Java in the default syntax highlighter. - Added support for JAI notes in the default syntax highlighter. - Implemented better behaviour for go_to_line_padding_end(). - Updated get_next_token() to better handle numbers. - Fixed a crash that would occur when opening a file after closing all tabs. - Fixed a bug in the default syntax highlighter involving javascript template literals. - Fixed a bug in the default syntax highlighter involving python string literals. - Fixed a bug where syntax highlighting would not update when changing casing. - Fixed a bug that could affect the handling of multi-line comments when starting syntax highlighting. v0.3.0 (beta) - 22/02/2024 - New token API ------------- !!! BREAKING CHANGE!!! The way tokens work has been completely refactored to simplify the program and to reduce input latency. Instead of tokenising the whole file everytime a change is made, it is up to you to retrieve tokens from a particular text section. Also syntax highlighting is no longer applied to the full file but only to the text section visible on screen. This greatly reduces input latency. To learn more about how to use the new token API and to highlight text, refer to examples/syntax.8 and check the default syntax highlighting file (syntax_latest.8 if you updated, syntax.8 if this is a fresh download of the latest version). - Added the ask_to_delete_items() API call. This lets you delete files and directories directly from the editor. - Slightly enhanced auto-completion. - Simplified the way files are saved for the first time. - A terminal tab now shows the status of the latest operation once it is completed. - Windows: fonts will now automatically get resized when the display resolution changes. - Added a new default theme, 'plastic'. - When applying the UI theme to the window border, the window title will now be greyed out when the window loses focus. - When closing the current tab, the editor will go to the tab you were previously at. - Fixed a memory bug. - Fixed a bug in align_selection_on_token_at_cursor(). - Fixed a bug involving undoing actions in text boxes. - Fixed a bug in go_right() that occured when the cursor would stand on whitespace at the end of a line. - Fixed a compiler bug that could crash the editor. v0.2.19 (beta) - 17/02/2024 -------------- - Further simplified the internals of the editor. - Added a few API calls: align_selection_on_token_at_cursor() and go_to_line_padding_end() - Selection padding: the cursor will now stay in place. - Implemented better undo behaviour for line swaps. - Added string_delimiters to Tokenisation_Hint. This will be useful for a future update. - Fixed a bug in pad_selection(). - Fixed a bug where files deleted on disk would not reload if a file with the same name was written back on disk. - Fixed a bug where undoing a character deletion would put the cursor in the wrong place. v0.2.18 (beta) - 15/02/2024 -------------- NOTE: some parts of the editor are being actively refactored so expect some things that worked before to not work sometimes. I am currently trying to release new versions with bug fixes as often as possible to bring some stability back. - Added a 'What is new' button when an update is available so that you can check the changelog before deciding to update. - Fixed a bug where delete_remaining_text_on_token() would not work well with whitespace. - Fixed a bug involving get_line_start(). - Fixed some compiler bugs. v0.2.17 (beta) - 14/02/2024 -------------- - Added the get_text_at() API call. - Adjusted the way the cursor is set after padding the selection. - Fixed a bug where going left and right would not work correctly in some cases. - You can now take items by address in for loops, e.g. for @ array {...} v0.2.16 (beta) - 12/02/2024 -------------- - Changed the way auto-complete works: now instead of navigating through different possible candidates the editor will auto-complete up to the commonly shared text (e.g. if you want to auto-complete 'te' and the editor finds candidates 'test' and 'tesselation' you will get 'tes' as a result). The auto-complete system tries to account for struct dereferences to retrieve the most relevant candidates. - Fixed a crash that could occur when replacing text. - Fixed undo issue when undoing a path auto-complete in the terminal. v0.2.15 (beta) - 12/02/2024 -------------- - Further simplified the internals of the editor. - Slightly changed the behaviour of skip_text(). - Slightly changed the behaviour of path auto-completion in the terminal. - Fixed a bug involving selection copy. v0.2.14 (beta) - 12/02/2024 - Quick Fix -------------- - Fixed a line insertion bug. - Fixed a bug where the cursor was not set correctly when swapping lines upwards. - Fixed a bug involving line deletion. v0.2.13 (beta) - 12/02/2024 -------------- - !!!BREAKING CHANGE!!!: get_line_start() and get_line_end() now return an offset into text data instead of returning a token. - Editor: added support for '_' within numbers, e.g. 0xff_ff will now get parsed as a number. - Refactored some portions of the editor to simply code. - Fixed a bug where search result highlighting would not work correctly if the item to highlight started at the beginning of a line. - Inlined sub-programs can now be directly used to assign constant values without the #constant directive. - Reduced the number of machine instructions emitted for the custom layer. - Fixed some compiler bugs. v0.2.12 (beta) - 22/01/2024 -------------- - Added anonymous structs, e.g. 'data: #struct {...};'. - Fixed a crash that would sometimes occur when searching multiple files and going to one of the results. - Fixed some compiler bugs. v0.2.11 (beta) - 13/01/2024 -------------- - The PATH environment variable of the process is refreshed before executing a command. - Fixed a bug in the terminal where the editor would crash sometimes when stopping a terminal process. v0.2.10 (beta) - 12/01/2024 -------------- DEPRECATION NOTICE: '$->' is deprecated in favour of #constant. Support for '$->' will probably cease in the next release. - Windows: zombie conhost.exe processes that are created in certain cases are now cleaned up over time. - Added the #constant directive (check examples/inlining.8 for more information). - Reduced the number of instructions generated for the custom layer in certain cases. - Fixed some compiler bugs. v0.2.9 (beta) - 06/01/2024 ------------- - !!!BREAKING CHANGE!!!: deprecated #no_copy in favor of #copy, now inline call arguments are *not* copied by default. See examples/inlining.8 - Added BYTES_VERSION_MAJOR, BYTES_VERSION_MINOR and BYTES_VERSION_BABY in api.8; these will be updated on every release. - You can now use cast() without an explicit type to let the compiler automatically cast a value. See examples/casting.8 - Updated examples. v0.2.8 (beta) - 05/01/2024 ------------- - Fixed an auto-complete bug. - Fixed a bug where fonts would not reload when changed. - Fixed a bug in the terminal where the selection would not work correctly if started on the last line of the output. - Fixed more visual delay bugs. - Fixed some compiler bugs. v0.2.7 (beta) - 22/12/2023 - Quick fix ------------- - The undo history of a file is now deleted on reload to prevent undo-related bugs from happening. - Fixed a visual bug where some actions would feel delayed. - Fixed a bug where search/search-and-replace in selection was no longer working. - Fixed a bug where multi-file search would not correctly recurse through sub-directories. - Fixed a compiler bug related to loops. v0.2.6 (beta) - 21/12/2023 ------------- - The search system has been rewritten from scratch and is now smoother to work with. - Search matches are now highlit in the source preview to let you know exactly what is matched. - Windows: terminal commands that seemingly did not go well (where the exit code of the process is not 0) are now highlit in a different way. - Reduced the number of machine code instructions generated in certain places. - You can now tag unknown types in polymorphic sub-programs, e.g. $f: (a: ?T, b: T) -> T = {...}; - Fixed lots of compiler bugs. v0.2.5 (beta) - 16/11/2023 ------------- - You can now specify an inlined sub-program to return constant values only, e.g. Some_Macro: () $-> u32 = #inline {...}; This lets you use them even in constant data which was not previously possible. - By default inline sub-programs arguments are copied but you can now use the #no_copy directive to prevent that from happening, e.g.: $add: (a: f32, #no_copy b: f32) -> f32 = #inline {...}; - Added the void type. You can implicitly cast any address type to '@ void'. - Fixed an annoying bug where scrolling would act weird sometimes. - Fixed several compiler bugs. v0.2.4 (beta) - 16/10/2023 ------------- - !!!BREAKING CHANGE!!!: Token API calls now take a token index instead of a Token instance. - Enhanced machine code quality. - Added get_num_tabs() and get_current_tab_index() to the API. - The default custom layer now lets you navigate tabs using alt + left/right. - Fixed a compiler bug involving enums. - Fixed a compiler bug involving unions. - Fixed a crash that would happen sometimes when clearing a terminal. - Fixed a bug where default themes would not be applied if the editor could not use the custom layer. v0.2.3 (beta) - 11/10/2023 ------------- - Reduced memory usage. - Multi-file search: searching is now faster when searching accross lots of files (files closer to where you are searching from are prioritised) and binary files are no longer searched. - The custom layer uses less stack memory and more machine registers. - The compiler now generates better machine code for floating point operations. - Fixed a bug in the compiler related to floating point operations. - Fixed a bug in the terminal where sometimes child instances would not be properly killed, which could leave you with tons of zombie processes killed only when you exit the editor. v0.2.2 (beta) - 10/10/2023 - Better machine code ------------- - Added constant string data deduplication when compiling the custom layer. - The custom layer now makes full use of CPU registers and reuses memory for better performance. - Made some changes to the default dark theme to introduce more contrast. - Updated icons for a smoother look. - Fixed machine code generation bugs in the compiler. v0.2.1 (beta) - 02/10/2023 ------------- - Somewhat reduced the number of machine code instructions generated for the custom layer. - Made some internal changes to the compiler to simplify memory allocation and get rid of legacy code. - Fixed a bug when searching accross multiple files where results would not automatically show up. - Fixed a compiler bug affecting if statements. - Fixed a bug on Windows where you could not open the current directory in the file explorer. v0.2.0 (beta) - 29/09/2023 - New Linux build ------------- Bytes can now run on Linux. Note that the Linux build is still experimental and some things may not work well, especially in the terminal. - Default tokenisation hints are now defined in syntax.8 as default_tokenisation_hints. - Added basic syntax highlighting for .sh and .bat files. - Added syntax highlighting for svg files. - Added the APPLY_THEME_TO_WINDOW_FRAME settings flag. Note that this may not work on every OS. - Fixed a bug in the syntax highlighter involving '<' on the same line as a compiler directive that is not an #include. - Fixed a latency issue when modifying text at lower frame rates. - Fixed a bug where you could not always grab a terminal scroll bar. - Fixed a bug in the file lister. v0.1.3 (beta) - 11/09/2023 ------------- - Added the USE_DEFAULT_SYNTAX_HIGHLIGHTER settings flag. Set this flag if you want to use the default syntax highlighter in syntax.8; the editor will then always keep this file up to date (and in the process overwrite the file's contents with its updated version). - Added better syntax highlighting for javascript template literals. - Multi-file search is now multithreaded for better performance. - Added max_editable_file_size to the Settings struct. This lets you filter out big files from multi-search results and file lists. The default value is 20MB. v0.1.2 (beta) - 11/09/2023 - Quick fix for CRLF line endings ------------- - Made some minor changes to the update system to generate smaller update data. - Fixed a bug involving CRLF line endings. v0.1.1 (beta) - 08/09/2023 ------------- - The editor now automatically checks for updates and lets you download them. - Syntax highlighting: anything between `` is now considered a string in .js and .ts files. - UI: hovering over tabs that are partially visible now works as expected. v0.1.0 (beta) - Initial release