Skip to content

Releases: RodrigoDornelles/3bc-lang

Version 0.1.3

01 Oct 17:12
0b69a8f
Compare
Choose a tag to compare

Warnings

  • codacy data was deleted.
  • publish in dockerhub: https://hub.docker.com/r/rodrigodornelles/3bc-lang
  • now the interpreter runs up to 2x faster.
    • is 2 million parsed lines per second (i3-10105f)
    • in mnemonic reading the worst case that would be half speed is now equal to the best case.

Features

  • added clang-tidy linter.
  • added support to docker container.
  • added support to mips and mips64¹.
  • added support to s390x¹.
  • added shebang in 3bc programs.
  • fixed correct detec BSD kernel.
  • fixed when TBC_P_COMPUTER compiles with TBC_NOT_ARGCV.
  • modified ANSI C-Compatible primitive fixed size types.
  • modified the interprteter functions more readable and easier to maintain.
  • modified linear search was changed to binary in the menemonics.
  • removed compiler warnings.
  • removed codacy.
  • removed sscanf dependency.

notes

  1. only in docker

Acknowledgment

sponsors

contributors

Version 0.1.2

30 Jul 02:03
39b0a4f
Compare
Choose a tag to compare

Warnings

  • there is no active coverage reporting tool.
  • interrupt waiting time in seconds is inaccurate.
  • interrupt waiting time it's not supported for windows.

Features

  • added target build for makefile.
  • added support to dynamic libaries.
  • added support to windows aarch64.
  • added support to linux powerpc, powerpc64 and riscv64.
  • added scripts for easy crossbuilds.
  • added shebang for .3bc examples.
  • added support arduino log base2 in cpu mode 38.
  • added website brazilian flagg in download buttons. 🇧🇷
  • added macros to detects cpu arch, plataform, kernel, etc.
  • fixed check boundaries in interpreter tickets.
  • fixed license notice in header's ands source's files.
  • fixed idle waiting time for microseconds and milliseconds.
  • fixed memory invasions in interpreter_syntax_constants and driver_power_signal
  • improved makefile clean.
  • improved support intel from i686 to i386.
  • changed asset names sufix and prefix.
  • changed main files folder root to programs/.
  • changed carriage return \r to be ignored in interpreter.
  • changed extesion in wasm assets modules from .js to .mjs.
  • changed website color links to have more hires and improve visibility.
  • changed website cdn fonts roboto and material-icons from google to jsdelivr.
  • dropped readme FAQ.
  • dropped macros PARSER_PACK and PARSER_UNPACK
  • dropped codecov (😡 I'm tired of false positives caused by comments or code moved between files)

Acknowledgment

sponsors

contributors

bug reporters

Version 0.1.1

12 Jul 22:26
cff5cd1
Compare
Choose a tag to compare

Features

  • added arch linux PKGBUILD
  • added support to kernel Nuttx
  • added simple install script for linux and macos
  • added automatic publishing assets on gh releases workflow
  • fixed problem when more 255 virtual machines are initied
  • fixed oversized buffer in hypervisor (saved 50% of ram memory)
  • improved code standards and documentations (linters, formatting, warnings, issues templates)

Acknowledgment

sponsors
contributors

Version 0.1.0

25 Dec 12:37
b2ae900
Compare
Choose a tag to compare

Anniversary Celebration First Official Release

🇺🇸 Exactly after 1 year of development, first stable release, celebrate your Christmas with 3bc language!

🇧🇷 Exatamente após 1 ano de desenvolvimento, primeira versão estavél, comemore seu natal com a 3bc language!

Features

  • NPM libary
  • Arduino libary
  • 99% test coverage
  • 16 automated tests (2 new)
  • 44 cpu modes (4 customisable)
  • 7 Supported architectures (arm, x86, wasm, asmjs, risc-v, avr, mos6502)

Beta 9

27 Nov 13:35
7f103ed
Compare
Choose a tag to compare
Beta 9 Pre-release
Pre-release

V8! TURBOCHARGED COMPETITION!

Now the language can run with less than 200 bytes of ram. (90 bytes shared, 86 bytes per virtual machine)

Updates

  • reduce 30% ram usage

  • reduce 20% rom usage

  • add cpu mode sleep

  • add error number negative

  • add boolean bitwise cpu modes

  • add log natural and log base cpu modes

  • add two new arduino framework examples

  • add nine boolean bitwise cpu modes

  • add flag _3BC_DISABLE_INTERPRETER

  • add support to many virtual machines in some host

  • unify functions some functions

  • reorder memory configs

  • clean llrbt memory

  • better interrupts

  • unlock interpreter buffer read

  • removed registers mmax & mmin.

  • removed tco cpu mode

  • removed all helpers

  • NOTE there will be no report of changes in cpu modes, there were many changes in this update, and this will be definitive, these changes will no longer be frequent.

Beta 8

01 Nov 12:34
8d98218
Compare
Choose a tag to compare
Beta 8 Pre-release
Pre-release

V8! Vrum Vrum!

Updates

  • Add support to procedural paradigm
  • Add support to CC65 (MOS6502 C Compiler)
  • Add support to Arduino Framework
  • Add support to esp8266 & esp32 (arduino framework)
  • Add register STRB in stream and inputs modes
  • add algebraic boolean CPU modes (31..39)
  • Add procedures CPU modes (41..43)
  • Memory alignment
  • POSIX terminal fixes
  • Decrease 15% of rom size
  • Tests Coverage in 99% of code
  • Implemented 12 automated tests
  • Reorder streams (STRB, STRO, STRI, STRX, STRC)
  • Removed sort cpu mode
  • Removed C++

Register changes

MODE BOOL NOT mode: 31
name octal bit description
math 1 001 boolean not
  • truth table
aux !aux
0 1
1 0
MODE BOOL AND mode: 32
name octal bit description
math 1 001 boolean and
  • truth table
aux math aux * math
0 0 0
0 1 0
1 0 0
1 1 1
MODE BOOL OR mode: 33
name octal bit description
math 1 001 boolean or
  • truth table
aux math aux + math
0 0 0
0 1 1
1 0 1
1 1 1
MODE BOOL XOR mode: 34
name octal bit description
math 1 001 boolean xor
  • truth table
aux math aux (+) math
0 0 0
0 1 1
1 0 1
1 1 0
MODE BOOL NAND mode: 35
name octal bit description
math 1 001 boolean nand
  • truth table
aux math !(aux * math)
0 0 1
0 1 1
1 0 1
1 1 0
MODE BOOL NOR mode: 36
name octal bit description
math 1 001 boolean nor
  • truth table
aux math !(aux + math)
0 0 1
0 1 0
1 0 0
1 1 0
MODE BOOL XNOR mode: 37
name octal bit description
math 1 001 boolean xnor
  • truth table
aux math !(aux (+) math)
0 0 1
0 1 0
1 0 0
1 1 1
MODE BOOL AND NOT mode: 38
name octal bit description
math 1 001 boolean and not
  • truth table
aux math aux * !math
0 0 0
0 1 0
1 0 1
1 1 0
MODE BOOL OR NOT mode: 39
name octal bit description
math 1 001 boolean or not
  • truth table
aux math aux + !math
0 0 1
0 1 0
1 0 1
1 1 1
MODE PROCEDURE_RET mode: 41
name octal bit description
call 1 001 return from procedure unconditionally
fcal 2 010 return from procedure if aux memory is fill
zcal 3 011 return from procedure if aux memory is empty
pcal 4 100 return from procedure if aux memory is positive
ncal 5 101 return from procedure if aux memory is negative
MODE PROCEDURE mode: 42
name octal bit description
call 1 001 call label procedure unconditionally
fcal 2 010 call label procedure if aux memory is fill
zcal 3 011 call label procedure if aux memory is empty
pcal 4 100 call label procedure if aux memory is positive
ncal 5 101 call label procedure if aux memory is negative
MODE PROCEDURE_RET_TCO mode: 43
name octal bit description
call 1 001 return from procedure at label unconditionally
fcal 2 010 return from procedure at label if aux memory is fill
zcal 3 011 return from procedure at label if aux memory is empty
pcal 4 100 return from procedure at label if aux memory is positive
ncal 5 101 return from procedure at label if aux memory is negative
  • NOTE: this cpu mode should be used for Tail Call Optimization, or else to make explicit when procedures will be terminated passing a label.

Beta 7

26 Jul 16:13
63a6177
Compare
Choose a tag to compare
Beta 7 Pre-release
Pre-release

Arduino GPIO's support

Updates

  • add four new memory configs.
  • add support to arduino framework gpio's.
  • add two new registers in cpu mode memory muse moff.
  • changed hash literal to starts with colon. (wrong "deprecated") (correct :updated)
  • changed names of register tmax tmin to mmax mmin
  • removed register tcfg in cpu mode memory

Register changes

MODE MEMORY mode: 6
name octal bit
free 1 001
aloc 2 010
moff tcfg 3 011
muse 4 100
mmax tmax 5 4 101 100
mmin tmin 6 5 110 101

Beta 6

05 Jul 12:54
631f4b9
Compare
Choose a tag to compare
Beta 6 Pre-release
Pre-release

Support memory pointers!

Updates

  • add two new cpu modes
  • add two new errors (columns wrongs, null pointer)
  • add alternative syntax (using: , . ;)
  • fix missing function log2 in avr architeture
  • fix white space in literal character
  • fix grammar errors in source code
  • solved math_basics.3bc example not working
  • removed characters limits by line
  • improve tokenization, improves interpreter performance and better supports syntax
  • improve internals for larger implementations in the future
  • improve compact mode is 10% more economical in ram memory
  • improve some macros to facilitate language portability

Register changes

MODE MEMORY PTR mode: 7
name octal bit description
free 1 001 realese memory in pointer
aloc 2 010 set a value in pointer
pull 3 011 pull aux memory to address pointer memory (ptr <- aux)
spin 4 100 inverse values inner memory pointer and aux (ptr <-> aux)
push 5 101 push aux memory to pointer memory (ptr -> aux)
MODE HELPER SIGN mode: 18
name octal bit description
math 1 001 verify number sign and storage in aux memory (-1, 0, 1)
MODE MEMORY SORT mode: 18 mode: 31
name octal bit description
math 1 001 sort memory address values

Beta 5

31 May 16:02
09abdf8
Compare
Choose a tag to compare
Beta 5 Pre-release
Pre-release

Support for negative numbers

this update delayed because my computer problem, and it took me a while to pick up the pace of development again, after refactoring, now i will endeavor to keep updates shorter.

Updates

  • add five new cpu modes
  • add literal type hash
  • add literal const skip
  • add negative numbers support
  • add jumps to "future"
  • add compact mode (saves 60% memory or more)
  • fixed error line number
  • fixed allow using all hardware memory (before there was a 50% limit)
  • refactored how works physical memory to promote greater use of hardware and performance in large programs (impacts slightly on smaller programs)
  • changed unit tests using typescript to ruby (decrease the number of project dependencies)
  • changed license MIT to GNU GPL3

Register changes

MATH ABS mode: 19 mode: 18
name octal bit description
math 1 001 positive module aux memory value
MATH NEGATIVE mode: 19
name octal bit description
math 1 001 negative module aux memory value
HELPER PERCENTAGE mode: 18 mode: 25
name octal bit description
math 1 001 percentage aux memory value
MODE HELPER REVERSE mode: 26
name octal bit description
nb02 1 001 base 2 reverse number
nb08 1 010 base 8 reverse number
nb10 1 011 base 10 reverse number
nb16 1 100 base 16 reverse number
MODE HELPER LOG BASE 2 mode: 27
name octal bit description
math 1 001 base 2 logarithm

MODE HELPER LOG BASE 10 mode: 28

name octal bit description
math 1 001 base 10 logarithm
MODE HELPER MUL ADD mode: 29
name octal bit description
nb02 1 001 multiply by 2 and accumulate operation
nb08 2 010 multiply by 8 and accumulate operation
nb10 3 011 multiply by 10 and accumulate operation
nb16 4 100 multiply by 16 and accumulate operation

Beta 4

18 Feb 17:35
d1a4035
Compare
Choose a tag to compare
Beta 4 Pre-release
Pre-release

Mid february update

Updates

  • added unit tests
  • added code coverage
  • added portability avr architecture
  • added portability risc-v architecture
  • added suport to numbers in register column
  • added suport to binary base (ex: 0b000, 0b001, 0b010)
  • fixed invalid label problem
  • fixed error reporting inaccurate
  • fixed wild pointers unexpected behavior possible
  • modified custom advanced memory settings are now correct
  • removed some irrelevant codes for virtual machine
  • removed irrelevant register stru

Try using numbers as registers !

Prints 5 with only using binary base
0b111 0b00 0b010
0b001 0b00 0b101