Skip to content

Releases: kulp/tenyr

v0.9.9

01 Sep 17:23
Compare
Choose a tag to compare

tenyr v0.9.9 is a development release. It is planned to be the last development release before the release of v1.0.0 later in 2021.

Notable changes since v0.9.8 include :

Added

  • Enable GitHub Actions for macos-11 runners (#96)
  • Introduce a yosys flow for ULX3S (#87)
  • Build on macOS Big Sur (#85)

Changed

  • Prefer sdl2-config over pkg-config (#82)
  • Run apt-get update before installing packages from APT (#84)

Fixed

  • Address collected minor issues (#81)
  • Address some Verilog lints and weaknesses (#94)
  • Collected ctest-provoked fixes (#95)
  • Fix crash in SDLVGA on macOS Big Sur 11.2 (#83)
  • Introduce collected hardware changes for ulx3s (#88)

Removed

  • Remove emscripten support (#92)
  • Remove Xilinx support (#86)

v0.9.8

01 Jan 17:37
Compare
Choose a tag to compare

tenyr v0.9.8 is a development release (tenyr is no longer using the term "pre-release" before v1.0, although there are still no stability guarantees before v1.0).

Notable changes since v0.9.7 include :

Added

  • Introduced a stream-based abstraction layer for filesystem operations
  • Defined the overshifting behavior for the @ operator
  • Defined the tenyr assembly grammar in ABNF (#60)

Changed

  • Updated supported emscripten version to 1.38.46
  • Reimplemented JIT using GNU lightning

Fixed

  • Corrected a long-standing tsim bug when right-shifting by more than 31 bits
  • Corrected tsim bugs manifesting on big-endian host machines (found on s390x)
  • Prevented a buffer overrun when too many plugins are specified (#64)

Removed

  • Dropped raw output format
  • Removed support for various deprecated and obsolete functionalities (#47)
    • Dropped support for C-style and C++-style comments in .tas files
    • Removed broken Forth implementation
    • Dropped support for deprecated v0 and v1 object formats
    • Remove unused @= syntax sugar
  • Stopped using C preprocessor on .tas.cpp files (#45)

See Changelog.md for full details.

Developer release v0.9.7

25 Jul 11:59
Compare
Choose a tag to compare
Pre-release

tenyr v0.9.7 is a development pre-release. Notable changes since v0.9.6 include :

  • support for @symbol - .Llocal expressions
  • updates to support bison 3.4.1 by replacing deprecated bison directives
  • a nominal, arbitrary limit of 2048 bytes on symbol lengths in version 2 objects (to promote runtime memory safety)
  • removal of memory leaks and misuse (e.g. read after free), mostly introduced by version 2 objects

Developer release v0.9.6

30 Apr 03:09
ac2161a
Compare
Choose a tag to compare
Pre-release

tenyr v0.9.6 is a periodic development pre-release.
Notable changes since v0.9.5 include :

  • version 2 objects supporting newly-unlimited symbol lengths
  • improved emscripten support

Developer release v0.9.5

17 Nov 00:43
Compare
Choose a tag to compare
Pre-release

tenyr v0.9.5 is a general developer release. Notable changes since v0.9.4 include :

  • adding a ~/.tsimrc file (à la --options=file) that is loaded by a new default recipe
  • running recipes in the order they are specified, instead of reverse order
  • allowing simulations to continue in the face of device errors
  • restoring serial input functionality in a limited way
  • adding a new BRAM-optimized 10x15 font and associated build tools
  • changing VGA output to be 64x32 text columns (down from 80x40)
  • replacing third-party VHDL VGA IP with scratch-written Verilog module
  • correcting reported column numbers for syntax errors
  • adding @+var and @=var shorthand forms
  • expanding op tests to test op types 0, 1, and 2

The new font was designed to be compressed into an 18kbit block RAM by minimizing the number of unique pixel rows in the font. This compression has not yet been done, but has been proven possible.

Developer release v0.9.4

05 May 03:12
Compare
Choose a tag to compare
Pre-release

This is a developer release with minor optimizations and fixes. Some of the more notable changes since v0.9.3 include :

  • Add build date to --version output
  • Add a missing trailing slash that was causing resource-loading to fail
  • Stop using unportable RTLD_DEFAULT
  • Remove little-used assert()
  • (Prematurely) optimise sparseram
  • Drop ancient 24-bit address space stricture
  • Remove obsolescent SPI simulated device
  • Make emscripten build a first-class citizen (make PLATFORM=emscripten)
  • Improve Javascript (emscripten build) code style and optimisability
  • Remove obsoleted conditional code for emscripten
  • Make clang compilation use clang++
  • Support disassembly in emscripten build

Revived emscripten support, miscellaneous goodies

06 Jun 01:12
Compare
Choose a tag to compare

This release revives the emscripten build, and sharply reduces its dependency on emscripten-only code and manual javascript mangling. The utility of the current emscripten build is still quite limited, but it is available for testing.

Otherwise, this is essentially a developer snapshot. Many externally-invisible improvements in code size and complexity and in test coverage have been implemented. Several work-in-progress branches have been merged in order to keep their code from bitrotting.

Initial support for the Wishbone B3 bus

06 Aug 22:23
Compare
Choose a tag to compare
Pre-release

This release adds initial support for the Wishbone B3 SoC bus from Opencores.org.

Additionally, reads from the VGA and LED devices now work on real hardware.

Big-endian support, code quality improvements

19 Jul 22:02
Compare
Choose a tag to compare

This minor version bump indicates that tenyr now compiles and successfully passes make check_sw on MIPS (big-endian).

Most changes between v0.9.0 and v0.9.1 are related to improvements in code quality – remedies to problems discovered by Coverity Scan and valgrind, improved code coverage, and so on.

Backward-incompatible instruction format changes

10 Mar 12:44
Compare
Choose a tag to compare

This version breaks backward binary compatibility with previous releases with respect to assembled tenyr source. The changes were made to again permit an all-ones instruction to effectively trap, by indirectly jumping to the top address of memory. The type3 instruction was changed to take (instead of only a 24-bit immediate) a register and a 20-bit immediate to add to it.

Line coverage was set up using coveralls.io. Coverage reported online is currently much lower than true coverage, since the Travis-CI builders do not have an easy path to SDL2 and thus cannot test much of the device code.

A simple C++ JIT compiler was added using AsmJit – it is faster than the interpreter by 2-4x, but most of the speedup in the future will come from a reworking of the devices to be asynchronous to CPU execution. The JIT is an optional external library, keeping the main tsim binary small and unencumbered with C++ dependencies.

Many bugs were resolved and features were added, and the parser was polished to an unnecessary level of glow. The deprecated .ascii directive was removed. The parser was made left-recursive so that objects of 5000+ instructions can now compile. Input and output formats were improved, and the memh format is now capable of input as well as output. The disassembler implementation was significantly simplified. A total guarantee on the bijection of assembly <-> disassembly is now provided and tested.

More tests were added to the test suite, and the test suite was reorganised. The incomplete forth/ code is compiled as part of the test suite to ensure compilation bitrot does not occur.