Bytes is a fast, lightweight and customisable text editor.

Features:

  • Everything is fast
  • Just download a zip file that is less than a megabyte in size
  • Built-in terminal with partial support for VT100 escape sequences
  • Everything is customised using a single language that is compiled to machine code (no need to bother with build-systems, external compilers and DLLs)
  • Everything runs on hardware
  • Rendering is done on the GPU

The editor is currently in beta and runs on Windows 10+ and Linux (x64). A port to MacOS is planned but unlikely to happen very soon. Feel free to report bugs or suggest features here.

Limitation:

  • Bytes is not an IDE.
  • For now the editor is not designed to handle big files.

Motivation:

I wanted to make a text editor that is fast and lightweight but also easily customisable. I decided to go with a custom language for the custom layer since it would be easier to make non-trivial customisations and share them as it only requires the editor to compile them, removing the need to install SDKs, compilers and to handle multiple platforms. I also wanted to avoid all the usual scripting languages since I do not think they are very good (both in the way they are designed and in the way their compilers and interpreters are engineered). Lastly this also gave me a good excuse to start working on a programming language of my own : )

Recent Activity

New Bytes release: v0.3.2 (beta)
It has been a little while since the last release and there was enough work done for a new one, even though I would have liked to include more bug fixes and performance improvements.
Full changelog:

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().

New release: v0.3.0 (beta)

Refactored the way tokens are handled to simplify everything and speed things up. Also syntax highlighting is only applied on visible text. Reduced input latency overall (up to 10x faster). This will likely get even better in the future as there are a few things that can be done to improve latency.

Full changelog:

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.

New release: v0.2.6 (beta)

I have not released a new version in a little while, so here it is. Mainly a lot of compiler bug fixes but I also rewrote the search system from scratch because I was not pleased with the mess and the unresponsiveness of the previous one. Now it actually feels smooth and snappy no matter how many files are being searched.

Full changelog:

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.

https://deliciouslines.com/bytes