[GSoC] apps/brainfuck: add Brainfuck interpreter #357
Open
dannydod
wants to merge 3 commits from
dannydod/kolibrios:brainfuck-interpreter into main
pull from: dannydod/kolibrios:brainfuck-interpreter
merge into: KolibriOS:main
KolibriOS:main
KolibriOS:wolf3d-launcher
KolibriOS:icons-update
KolibriOS:kterm-upload
KolibriOS:app/socketdbg_fix1
KolibriOS:hdaudio-add-ring-buffer-for-unsolicied-events
KolibriOS:workflow-fuse
KolibriOS:add-license-file-header-to-guide
KolibriOS:blocks-add-models
KolibriOS:shell-improve-cpuid
KolibriOS:rewrite_ide_drv
KolibriOS:qrcodegen
KolibriOS:ci/update
KolibriOS:laser-tank-fix-win-height
KolibriOS:improvement/commit-and-branch-styles
KolibriOS:docs/libs
Dismiss Review
Are you sure you want to dismiss this review?
Labels
Clear labels
C
Category/Applications
Category/Drivers
Category/General
Category/Kernel
Category/Libraries
Eolite
FASM
FS
GSoC
HardwareTested
HLL
Influence/Settings
Influence/Text/TYPO
IRCC
Kernel
Pay for the code
This issue in GSoC program
Kind
Breaking
Breaking change that won't be backward compatible
Kind
Bug
Something is not working
Kind
Build
Kind
Documentation
Documentation changes
Kind
Enhancement
Improve existing functionality
Kind
Feature
New functionality
Kind
Security
This is security issue
Kind
Testing
Issue or pull request related to testing
Paid task
PR
Conflicts
PR conflicts with main
PR
Dependent
This PR is dependent on another PR
Priority
Critical
The priority is critical
Priority
High
The priority is high
Priority
Low
The priority is low
Priority
Medium
The priority is medium
PR
Ready to merge
Pull request is ready for merge
PR
Request changes
Changes requested in pull request
PR
Review required
Reviewed
Confirmed
Issue has been confirmed
Reviewed
Duplicate
This issue or pull request already exists
Reviewed
Invalid
Invalid issue
Reviewed
Won't Fix
This issue won't be fixed
Status
Abandoned
Somebody has started to work on this but abandoned work
Status
Blocked
Something is blocking this issue or pull request
Status
Need More Info
Feedback is required to reproduce issue or to continue work
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: KolibriOS/kolibrios#357
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "dannydod/kolibrios:brainfuck-interpreter"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Brainfuck interpreter with interactive REPL interface for KolibriOS.
Features
run <filepath>commandThis is my first contribution to KolibriOS for GSOC 2026
WASM runtime project preparation
@dunkaist Do you know if this is part of GSOC, is there a mentor here?
This is a test task for GSoC, yes. The main project is WASM runtime. I have given feedback in a private conversation to remove the binary and split BF logic into a separate file from bf_*_interp.asm
@dannydod
What license is this software distributed under?
@@ -0,0 +188,4 @@test eax, eaxjz .display_helpstdcall string.cmp, buffer_data, reset_cmd, 5This should be 6, I believe. Magic numbers should be avoided. Could you, please, turn this series of stdcall, test, jz to a table of strings and pointers to the corresponding functions? I've seen you used a jump table, therefore pointers to functions shouldn't be a problem for you
Hi Ivan, thanks for the review. I would fix refactor the command test, and move all initialized data to after the code.
@@ -0,0 +26,4 @@; data definitionsprompt db "BF:> ", 0Please, keep code and data separated. You define data both at the start and at the end of the program. In KolibriOS, we usually keep all the data at the end. You can put initialized data after code just before I_END
@mxlgv MIT license. I'll add a LICENSE file in the next commit. Or is there any specific license you would recommend for contributed programs?
If it is port - license of original code should be kept.
If it is written by yourself from scratch - it's totally up to you, but we would recommend GPL-2.0-only, same as KolibriOS kernel code is distributed.
39ea7b4196to84e83c8926I recommend using the
mcallmacro and constants fromKOSfunc.inc@@ -0,0 +1,110 @@format binary as ""I recommend adding headers like these to your files:
@@ -0,0 +13,4 @@dd parametersdd 00parameters rb 1024This increases the size of the binary by a kilobyte
@@ -0,0 +83,4 @@int 0x40I_END:; data definitionserr1 db "Missing parenthesis match",0Declaring initialized data after the end of the program image looks wrong
Add Brainfuck Interpreterto [GSoC] Add Brainfuck Interpreter[GSoC] Add Brainfuck Interpreterto [GSoC] apps/brainfuck: add Brainfuck interpreterView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.