Skip to content

feat: v8.0.0 - Destructuring, Arrow Functions, and Utility Overload - #37

Merged
AnkanSaha merged 3 commits into
mainfrom
maintainer/ankan
Feb 21, 2026
Merged

feat: v8.0.0 - Destructuring, Arrow Functions, and Utility Overload#37
AnkanSaha merged 3 commits into
mainfrom
maintainer/ankan

Conversation

@AnkanSaha

@AnkanSaha AnkanSaha commented Feb 21, 2026

Copy link
Copy Markdown
Member

Summary

Major version bump to v8.0.0. This PR adds advanced syntax features like destructuring, arrow functions, and a massive expansion of the standard library (Array, String, Date, and Regex utilities).

Changes

  • Syntax: Added do-while, for-of, for-in, delete, in, instanceof.
  • Functions: Added Arrow functions support (x => x * 2).
  • Assignment: Array and Object destructuring in declarations (dhoro [a, b] = arr).
  • Standard Library:
    • Array: khojo_prothom, somtol, somtol_manchitro, etc.
    • String: ache_text, shuru_diye, baro, agey_bhoro, etc.
    • Date/Regex: tarikh_ekhon, regex_test, matchAll, etc.
  • Tooling: Updated VS Code snippets and TextMate grammar.

Verification

  • Updated FEATURE_LIST.md and MISSING.md.
  • Docs updated with examples for new methods.
  • Version bumped in package.json and VERSION files.

@AnkanSaha AnkanSaha self-assigned this Feb 21, 2026
@AnkanSaha
AnkanSaha requested review from Copilot and removed request for Copilot February 21, 2026 22:23
@github-actions github-actions Bot changed the title Maintainer/ankan feat: major version v8.0.0 - advanced syntax, destructuring, and massive standard library expansion Feb 21, 2026
@github-actions

Copy link
Copy Markdown

🤖 Review Buddy - General Code Review

👥 Attention: @AnkanSaha

Oho @AnkanSaha! Bhai, v7.1.0 se seedha v8.0.0? Itna confidence toh RCB fans mein bhi nahi hota har saal.

Tune toh poora JavaScript uthake Bengali dictionary mein daal diya hai. Ye khojo_prothom, somtol_manchitro... bhai code likh rahe ho ya Rabindra Sangeet compose kar rahe ho?

Technical side pe bolun toh, tune naye keywords add kiye hain (do, of, in, delete) aur destructuring bhi ghusa di hai, par bhai AST aur Evaluator ki halat dekhi hai? Itna bojh daloge toh compiler bechara suicide kar lega.

Code Quality Score: 6/10. Kaam toh kiya hai, par originality ke naam pe sirf translation hai.


Generated by Review Buddy | Tone: roast | Language: hinglish

@github-actions

Copy link
Copy Markdown

⚡ Review Buddy - Performance Analysis

👥 Attention: @AnkanSaha

Bhai, performance ki baat karein toh tera code bullet train banne ki koshish kar raha hai par patri (tracks) cycle ki hain.

  1. Recursive Flattening (somtol):
    Bhai, ye flattenArray function mein jo recursion chalayi hai na, agar thoda bhi deep nested array aaya toh 'Stack Overflow' chillate hue tera program dum tod dega. Iterative approach naam ki bhi koi cheez hoti hai duniya mein.

    // Tera bawasir code:
    func flattenArray(elements []object.Object, depth int) []object.Object { ... recursive call ... }

    Bhai, recursion is cool only in movies, not in high-performance Go interpreters.

  2. Array Concat (joro_array):
    Bhai, append(result, base.Elements...) aur fir loop ke andar append? Har append pe memory reallocation ka mela laga rakha hai. Go memory allocator ko pasina aa jayega. Pre-allocate karne ka dukh hai kya? make([]object.Object, 0, totalLength) use karne mein GST lagta hai?

  3. String Concatenation in Loops:
    ast files mein bytes.Buffer use kiya hai, chalo thodi akal toh aayi. Par builtins mein strings aur arrays ke saath jo khilwad kiya hai, woh O(n²) ki taraf ishara kar raha hai.

  4. Map Iteration (ghuriye ... in):
    Bhai, objects pe for...in loop lagane ke liye tune poore environment ko scan maar diya hai. Agar map bada hua toh user coffee peeke wapas aa jayega par loop khatam nahi hoga.

  5. Closure Overhead:
    Itne saare functions (khojo_prothom, prottek) sab callbacks le rahe hain. Interpreter har baar environment frame create kar raha hai. Bhai, overhead toh dekho!

Recommendations:

  • somtol ko iterative banao, recursion se ghar nahi chalta.
  • joro_array mein pehle total length calculate karo aur fir ek baar mein make karo.
  • Built-in functions mein input validation ko thoda optimize karo, har baar newError formatting expensive hai.

Generated by Review Buddy | Tone: roast | Language: hinglish

@github-actions

Copy link
Copy Markdown

🔐 Review Buddy - Security Audit

👥 Attention: @AnkanSaha

Bhai, security ke naam pe tune toh darwaze khulle chhod diye hain.

  1. URI Helpers (uri_ongsho_encode):
    uri_ongsho_encode aur uri_decode toh de diya, par kya tune input validation ki? Agar koi malicious payload bheje toh tera interpreter use seedha process kar dega.

    • Severity: Medium
    • Scenario: User input direct URI function mein gaya aur XSS ya Open Redirect ho gaya.
  2. Delete Operator (delete obj.prop):
    Bhai, delete operator implementation mein tune checks toh lagaye hain, par internal environment properties delete karne ka chance chhod diya hai. Agar user ne core functions hi delete kar diye toh?

    • Severity: High
    • Location: src/evaluator/advanced.go -> evalDeleteExpression
  3. Regex Injection:
    regex_test aur regex_match mein user seedha pattern pass kar raha hai. 'ReDoS' (Regular Expression Denial of Service) ka naam suna hai kabhi? Koi (a+)+$ bhej dega aur tera server wahi dher ho jayega.

    • Severity: Critical
    • Remediation: Regex execution pe timeout lagao aur complexity check karo.
  4. Integer Overflow:
    purno_sonkhya mein radix handle kiya hai par bounds check nahi kiya. Go ka int overflow handle kar lega par logic crash kar jayega.

  5. Path Traversal:
    Purana code toh pata nahi par naye methods mein agar koi file path manipulate karega toh tera current implementation rok nahi payega. OWASP Top 10 kabhi padh bhi liya karo, sirf YouTube pe roast dekhne se developer nahi bante.


Generated by Review Buddy | Tone: roast | Language: hinglish

@github-actions

Copy link
Copy Markdown

📊 Review Buddy - Code Quality & Maintainability Analysis

👥 Attention: @AnkanSaha

🎯 Overall Benchmark: 65/100 (Needs Improvement)

Bhai, code quality aisi hai ki Clean Code ke author Robert C. Martin ye dekh lein toh retirement le lein.

  1. AST Bloat:
    src/ast/advanced.go, destructuring.go, loops_advanced.go... bhai itni files? Har naye feature ke liye nayi file banaoge toh src folder library ban jayega. Common logic ko group karna seekho.

  2. Naming Convention (The 'Banglish' Mess):
    khojo_prothom, somtol_manchitro? Bhai, programmer hai ya purohit? Coding standard maintain karo. Half English half Bengali (Banglish) is a nightmare for anyone who isn't you.

  3. SOLID Principles ka Murder:

    • Single Responsibility: evaluator/advanced.go mein hi sab kuch bhar diya hai. delete, in, instanceof... sab ek hi jagah.
    • Open/Closed: Naya builtin add karne ke liye poori init function modify karni pad rahi hai. Bhai, plugin system ya registry pattern use karo.
  4. Error Handling:
    Tera error handling 'Inshallah' pe chal raha hai. newError("wrong number of arguments. got=%d, want>=1", len(args))... bhai har function mein wahi boilerplate code copy-paste kiya hai. DRY (Don't Repeat Yourself) gaya tel lene?

  5. Missing Tests:
    Itni badi version jump aur documentation updates, par tests kidhar hain? Unit tests ke bina code production mein dalna matlab bina helmet ke bike chalana hai.

Refactoring Suggestions:

  • Registry Pattern: Builtins ke liye ek registry banao taaki init functions itni gandi na dikhein.
  • Error Factory: Ek centralized error factory banao jo standardized errors generate kare.
  • Interface Abstraction: AST nodes mein common patterns ko interface mein dalo.

Generated by Review Buddy | Tone: roast | Language: hinglish

@github-actions

Copy link
Copy Markdown

💡 Review Buddy - Best Practices & Alternative Suggestions

👥 Attention: @AnkanSaha

Bhai, thoda modern standards follow kar lo, warna 1990 ke developer lagoge.

1. Manual Length Check vs Pre-allocation

Current Code:

result := make([]object.Object, 0, len(base.Elements))
for i := 1; i < len(args); i++ {
    result = append(result, args[i]) // Reallocation constantly
}

Better Alternative:

// Calculate total size first
totalSize := len(base.Elements)
// ... count other elements ...
result := make([]object.Object, totalSize, totalSize)
// Use copy or index assignment

Why: Performance improve hogi aur memory fragmentation kam hogi.

2. Radical Arrow Functions

Current Code (Snippet from documentation):

dhoro inc = x => { ferao x + 1; };

Better Alternative:

dhoro inc = x => x + 1; // Implicit return support

Why: Clean dikhta hai bhai, extra brackets aur ferao kyun chahiye jab kaam chhota hai.

3. Error Handling Boilerplate

Current Code:

if len(args) < 1 {
    return newError("wrong number of arguments. got=%d, want>=1", len(args))
}

Better Alternative:
Create a helper: func checkArgs(count int, min int, name string) *object.Error
Why: Code maintainable rahega aur typos kam honge.


Generated by Review Buddy | Tone: roast | Language: hinglish

@github-actions

Copy link
Copy Markdown

⚠️ Review Buddy - Final Recommendation

👥 Attention: @AnkanSaha

Recommendation: REQUEST CHANGES

Changes chahiye, bhai! Abhi approve nahi kar sakte.

Reasoning:

  • Recursive flatten implementation is risky for deep arrays.
  • Massive boilerplate code in built-ins (DRY principle violated).
  • Lack of bounds checking and input validation in several new utility functions.
  • No new unit tests provided for a major version bump (8.0.0).
  • Naming conventions for new keywords are inconsistent with existing patterns.

📋 Review Checklist for Reviewers:

  • Code changes align with the PR description
  • No security vulnerabilities introduced
  • Performance considerations addressed
  • Code follows project conventions
  • Tests are adequate (if applicable)
  • Documentation updated (if needed)

🎯 Next Steps:

⚠️ Pehle suggestions address karo, phir approve karna.

Generated by Review Buddy | Tone: roast | Language: hinglish

…terval timer control for reliable termination.
Copilot AI review requested due to automatic review settings February 21, 2026 22:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review is ineligible. To be eligible to request a review, you need a paid Copilot license, or your organization must enable Copilot code review.

@github-actions github-actions Bot changed the title feat: major version v8.0.0 - advanced syntax, destructuring, and massive standard library expansion feat: v8.0.0 - Destructuring, Arrow Functions, and Utility Overload Feb 21, 2026
@github-actions

Copy link
Copy Markdown

🤖 Review Buddy - General Code Review

👥 Attention: @AnkanSaha

Oye @AnkanSaha! v8.0.0 nikal toh diya, par ye code dekh ke lag raha hai ki tumne bas JavaScript ki documentation uthayi aur Google Translate se Bengali mix karke thappad maar diya parser pe. Destructuring aur Arrow functions daal dene se tumhara interpreter 'Advanced' nahi ban jata, bhai. Logic abhi bhi wahi 2010 wala hai.

Bugs toh aise bhare pade hain jaise Dilli ki sadkon pe gaddhe. Tumne delete operator toh daal diya par ye nahi socha ki pointer management ka kya hoga? Memory leak ho rahi hai ya bas 'Hawa Mahal' bana rahe ho?

Style issues ki toh baat hi mat karo. Standard library expand karke tumne itna kachra bhar diya hai ki parser bechara confuse ho jaye. Agli baar feature list badhane se pehle thoda core engine pe kaam kar lena, warna v9.0.0 tak tumhara 'BanglaCode' bas ek string replacement library ban ke reh jayega.

Code Quality Score: 3/10 (3 marks bas us author name ke liye jo itni himmat dikha raha hai).


Generated by Review Buddy | Tone: roast | Language: hinglish

@github-actions

Copy link
Copy Markdown

⚡ Review Buddy - Performance Analysis

👥 Attention: @AnkanSaha

Bhai Ankan, ye performance analysis padh lo, warna tumhara code toh sirf 'NASA' ke supercomputer pe chalega, aur wo bhi lag karega.

  1. somtol (Array Flat) Disaster:
    Yaar, tumne recursion use kiya hai flattenArray mein. Agar main 100-level deep nested array de doon na, toh tumhara Go stack 'Jai Mata Di' bol ke phat jayega. Depth check toh diya hai, par stack frame management ka kya?

    // Current approach (Slower than local train):
    func flattenArray(elements []object.Object, depth int) []object.Object {
        // Recursion without tail-call optimization? 
        // Go doesn't even have TCO, bhai!
    }

    Tumhe iterative approach use karna chahiye tha using a stack.

  2. joro_array (Concat) ki Allocation Khichdi:
    result := make([]object.Object, 0, len(base.Elements))
    Bhai, tumne capacity sirf base elements ki li. Phir niche loop mein append kar rahe ho. Har baar jab capacity exceed hogi, Go naya memory allocate karega aur pura data copy karega. O(N+M) complexity toh theek hai, par allocations O(log N) baar ho rahi hain.
    Recommendation: Pehle total size calculate karo, phir ek hi baar make karo with exact capacity.

  3. Type Switching ki Marathon:
    Tumhare Eval function mein aur built-ins mein switch o := obj.(type) ki ladi lagi hui hai. Ye runtime reflection Go mein bohot mehngi padti hai. Har function call pe itne checks? CPU bechara ro raha hoga.

  4. String Concatenation in String() methods:
    ast package mein tum bytes.Buffer use toh kar rahe ho, par kuch jagah + operator bhi dikh raha hai. Template literals mein toh performance ka bawasir bana diya hai.

  5. Closure Memory Leaks:
    Arrow functions aur closures support kar rahe ho, par environment capture kaise ho raha hai? Agar har function naya scope create karega aur purane reference delete nahi honge, toh 'Garbage Collector' bhi resign kar dega.

  6. Regex ReDoS Vulnerability:
    regex_match_all bina kisi timeout ya limits ke? Agar koi malicious pattern daal de ((a+)+$), toh tumhara CPU tandoori chicken ban jayega loop mein phans ke.

  7. Object Destructuring Overhead:
    Destructuring ke time tum pura object/map iterate kar rahe ho keys find karne ke liye. Agar object mein 10,000 keys hain aur mujhe sirf {x} chahiye, toh bhi tum mehnat kar rahe ho. Binary search ya hash lookups ko optimize karo.

  8. Interpreter Loop Latency:
    V8 version bol rahe ho par koi JIT toh door ki baat, bytecode generation bhi nahi hai. Pure AST-walking interpreter hai ye. Isse tez toh main dimaag mein code execute kar leta hoon.

  9. Built-in Map Bloat:
    Builtins map mein 200+ functions register kar diye hain. Har call pe map lookup? Thoda optimize karo, internal index use karo.

  10. JSON Marshalling Performance:
    json_banao aur json_poro standard encoding/json use kar rahe hain. Heavy objects ke liye ye bohot slow hai. ffjson ya easyjson ka naam suna hai kabhi?


Generated by Review Buddy | Tone: roast | Language: hinglish

@github-actions

Copy link
Copy Markdown

🔐 Review Buddy - Security Audit

👥 Attention: @AnkanSaha

Arre baap re! Security ke naam pe toh tumne darwaze hi nahi, poori diwaal hi gira di hai.

1. Command Injection / Script Injection via Regex

Severity: High
Location: src/evaluator/builtins/builtins_regex.go (Assuming based on README update)
Scenario: Agar user input directly regex_test ya regex_replace mein ja raha hai, toh attacker 'Backtracking' exploit kar ke ReDoS (Regular Expression Denial of Service) kar sakta hai.
Remediation: Use a regex engine with a timeout or limit the complexity of patterns. Go's regexp is safer than others but still prone to CPU exhaustion.

2. Path Traversal in File Operations

Severity: Critical
Location: poro(), lekho(), file_rename()
Scenario: Tumhare README mein poro() function hai. Agar user input ../../../etc/passwd hai, toh kya tumhara BanglaCode use rokega? Nahi! Kyunki tumne koi sandboxing ya path validation nahi ki.
Remediation: Use filepath.Clean and check if the resulting path is within an allowed 'workspace' directory.

3. Insecure URI Encoding/Decoding

Severity: Medium
Location: uri_ongsho_decode()
Scenario: Improper decoding can lead to XSS if the output is rendered in a browser without sanitization. BanglaCode is being used for web servers (server_chalu), so this is a real threat.
Remediation: Ensure that decoded components are context-aware sanitized before being reflected in HTML.

4. Global Namespace Pollution

Severity: Low
Location: bishwo variables
Scenario: Global variables are accessible everywhere. In a multi-user server environment (if someone uses your tcp_server_chalu), one script can overwrite another's global state.
Remediation: Implement proper module scoping and isolation.

5. Lack of Rate Limiting in HTTP Built-ins

Severity: Medium
Location: pathao_post(), pathao_put()
Scenario: Koi bhi script loop chala ke pathao_post use karke DDoS attack launch kar sakta hai kisi teesri website pe, aur badnaam tumhara BanglaCode hoga.
Remediation: Built-in HTTP client should have default timeouts and perhaps a global rate-limit config.


Generated by Review Buddy | Tone: roast | Language: hinglish

@github-actions

Copy link
Copy Markdown

📊 Review Buddy - Code Quality & Maintainability Analysis

👥 Attention: @AnkanSaha

🎯 Overall Benchmark: 40/100 (Poor)

Bhai, quality analysis dekh lo, shayad kuch akal aa jaye.

  1. SOLID Principles ka Murder:

    • Single Responsibility: evaluator.go ek 'God Object' banta ja raha hai. Sab kuch wahi handle kar raha hai - logic, math, strings, loops. Isko separate handlers mein divide karo.
    • Open/Closed: Naye operators add karne ke liye tumhe core evaluator modify karna padta hai. Isse acha 'Visitor Pattern' use karo.
  2. Naming Convention Bawasir:

    • khojo_prothom, khojo_shesh, somtol_manchitro. Bhai, ye programming language hai ya kisi Bengali sweets shop ka menu? Mix and match (Banglish) se readability zero ho jati hai. 'khojo' is fine, but 'somtol_manchitro' for 'flatMap'? Serious?
  3. DRY (Don't Repeat Yourself) Violations:

    • evalInOperator aur evalDeleteExpression mein member resolution ka logic lagbhag same hai. Kyun baar baar likh rahe ho? Extract it to a helper function.
  4. Error Handling (The 'I don't care' approach):

    • if isError(obj) { return obj } - Ye har jagah bikhra hua hai. Go mein error handling verbose hoti hai, par tumhare interpreter mein ye code flow ko clutter kar raha hai. Use a custom error wrapper.
  5. AST Bloat:

    • src/ast/advanced.go, src/ast/destructuring.go, src/ast/loops_advanced.go. Itni saari files? Ek ast.go ya organized folder structure rakho. Har 2 feature ke liye nayi file banaoge toh v10 tak 500 files ho jayengi.
  6. Documentation vs Reality:

    • FEATURE_LIST.md mein likha hai 'Production-grade database connectors'. Bhai, main.go mein toh ek bhi connection pool ka logic nahi dikh raha. Sirf wrapper likh dene se wo 'Production-grade' nahi ho jata.
  7. Testing ka Aata-Pata nahi:

    • Diff mein ek bhi naya test case nahi dikha. Version 8.0.0 nikaal diya aur tests wahi purane? Regression bugs tumhara intezaar kar rahe hain.
  8. Magic Strings:

    • Token types aur keywords hardcoded strings hain. Const use karo warna ek typo aur poora parser 'Khatam, Gaya, Bye Bye' ho jayega.
  9. Function Complexity:

    • Eval function ki cyclomatic complexity chart-buster hai. Isko refactor nahi kiya toh debugging karte karte budhe ho jaoge.
  10. Technical Debt:

    • MISSING.md mein 260+ features listed hain. Tum features add karne se pehle technical debt clear karo, warna ye project ek bada ball of mud ban jayega.

Generated by Review Buddy | Tone: roast | Language: hinglish

@github-actions

Copy link
Copy Markdown

💡 Review Buddy - Best Practices & Alternative Suggestions

👥 Attention: @AnkanSaha

Bhai, ye modern programming hai, 1990 ki coding mat karo.

1. Object Property Check

Current Code:

dhoro obj = {a: 1};
jodi (obj["a"] != undefined) { ... }

Better Alternative:

dhoro obj = {a: 1};
jodi ("a" in obj) { ... } 
// Ya phir naya builtin use karo
jodi (nijer_ache(obj, "a")) { ... }

Why: undefined check fail ho sakta hai agar value hi undefined set ki ho. in operator property existence check karta hai, value nahi.

2. Array Iteration

Current Code:

ghuriye (dhoro i = 0; i < dorghyo(arr); i = i + 1) {
    dekho(arr[i]);
}

Better Alternative:

ghuriye (item of arr) {
    dekho(item);
}

Why: Much more readable aur index out of bounds ke chances khatam. Boilerplate code kam hota hai.

3. String Padding

Current Code:

dhoro s = "7";
jotokkhon (kato(s) < 3) { s = "0" + s; }

Better Alternative:

dhoro s = agey_bhoro("7", 3, "0");

Why: Manual loop is O(n^2) because strings are immutable in many languages (and in Go). agey_bhoro use karo, wo optimized built-in hai.

4. Comparison

Current Code:

jodi (x == sotti) { ... }

Better Alternative:

jodi (x) { ... }

Why: Cleaner syntax. Direct boolean evaluation use karo, 'sotti' se compare karne ki nautanki mat karo.


Generated by Review Buddy | Tone: roast | Language: hinglish

@github-actions

Copy link
Copy Markdown

⚠️ Review Buddy - Final Recommendation

👥 Attention: @AnkanSaha

Recommendation: REQUEST CHANGES

Changes chahiye, bhai! Abhi approve nahi kar sakte.

Reasoning:

  • Memory leak potential in flattenArray recursion.
  • Destructuring syntax added to parser but evaluation logic for nested destructuring seems missing or untested.
  • Global Builtins map is becoming a performance bottleneck.
  • Lack of input validation in new file/regex utility functions leads to security risks (ReDoS, Path Traversal).
  • Documentation is ahead of actual core implementation in some areas.

📋 Review Checklist for Reviewers:

  • Code changes align with the PR description
  • No security vulnerabilities introduced
  • Performance considerations addressed
  • Code follows project conventions
  • Tests are adequate (if applicable)
  • Documentation updated (if needed)

🎯 Next Steps:

⚠️ Pehle suggestions address karo, phir approve karna.

Generated by Review Buddy | Tone: roast | Language: hinglish

@AnkanSaha
AnkanSaha merged commit e92c67e into main Feb 21, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants