Skip to content

[RFC]: Enhancing stdlib with Async Utility Functions (Feature Parity with async.js) #150

@Ganesh2510Raj

Description

@Ganesh2510Raj

Full name

Ganesh Raj

University status

Yes

University name

Maulana Abul Kalam Azad University of Technology

University program

Bachelor of Technology in Information Technology

Expected graduation

2028

Short biography

I am a 1st year Information Technology student with a strong interest in JavaScript and asynchronous programming, and a passion for learning and creating innovative solutions through coding and web development. I have 6 months of experience with JavaScript. I am comfortable with modular codebases, testing frameworks, and performance profiling. I am excited to contribute to stdlib and learn from experienced mentors like @kgryte, @Planeshifter, and @steff456.

Timezone

Asia/Kolkata , (UTC+5:30)

Contact details

[email protected]

Platform

Windows

Editor

VSCode

Programming experience

My experience with programming languages is HTML, CSS, and JavaScript. I created a project on IRIS-Smart-Tutor available on my GitHub.
Project Link: https://github.com/Ganesh2510Raj/IRIS-Smart-Tutor.git

JavaScript experience

I created a project on IRIS-Smart-Tutor available on my GitHub where I use JavaScript in my project.
Project Link: https://github.com/Ganesh2510Raj/IRIS-Smart-Tutor.git

Node.js experience

I am now learning Node.js, and till now I have no experience with Node.js.

C/Fortran experience

No

Interest in stdlib

I am drawn to this project because it combines my passion for JavaScript with an opportunity to enhance
a library used by developers worldwide. The challenge of balancing performance, usability, and
maintainability excites me, and I look forward to collaborating with the stdlib community to deliver a
valuable contribution.

Version control

Yes

Contributions to stdlib

No

stdlib showcase

Yes

Goals

  1. Feature Parity: Implement a set of asynchronous utility APIs in stdlib that mirror the functionality
    of async.js, including but not limited to parallel execution, series execution, waterfall, and queue
    management.
  2. Adaptation to stdlib: Ensure the APIs align with stdlib’s naming conventions, coding style, and
    modular structure.
  3. Documentation: Provide clear, detailed documentation and examples for each new API.
  4. Testing: Develop a comprehensive test suite to ensure reliability and correctness of the
    implemented APIs.
  5. Performance Optimization: Benchmark the new APIs against async.js to ensure competitive
    performance.

Why this project?

Asynchronous programming is a cornerstone of modern JavaScript development, particularly for I/O bound and computationally intensive tasks. While stdlib excels in numerical and scientific computing, its limited async capabilities restrict its use in scenarios requiring complex asynchronous workflows. Callback-based APIs, as exemplified by async.js, offer superior performance compared to Promise-based APIs alternatives in certain cases and allow for more granular control via status objects. By integrating these capabilities into stdlib, this project will enhance its utility for developers working on performance-sensitive applications, aligning it with industry-standard tools.

Qualifications

• Proficient in JavaScript (ES6), including callbacks, Promises, and event loops.
• Basic understanding of modular library design and testing.

Prior art

No

Commitment

I am available to work full-time (20 hours/week) during the GSoC period (May-August 2025) and have no conflicting commitments. I will communicate regularly with mentors via email and Element and provide weekly progress updates. I have planned my schedule to focus exclusively on this project, ensuring timely delivery and active participation in community discussions and code reviews.

Schedule

Assuming a 12 week schedule,

  • Community Bonding Period:

  • Week 1:
    - Deep dive into async.js source and documentation
    - Identify similarities/differences with stdlib async goals
    - Draft basic API structure and discuss with mentor
    - Create an initial technical design document

  • Week 2:

           -Finalize API design with mentor approval
           -Set up scaffolding for async modules in stdlib
           -Define types, inputs, and expected behaviors
    
  • Week 3:
    -Implement base async utilities (e.g., series, parallel)
    -Write corresponding unit tests
    -Test compatibility with existing stdlib structure

  • Week 4:
    -Add promise-based async functions
    -Support async iteration and callbacks
    -Begin integrating functions into documentation

  • Week 5:
    - Continue building out core async APIs
    - Add error handling and timeout features
    - Start preparing demo examples

  • Week 6: (midterm)
    - Midterm Evaluations
    - Submit a demo of core functionalities
    - Receive feedback and make necessary adjustments

  • Week 7:
    - Implement advanced features like throttling, queue control
    - Optimize performance using benchmarks

  • Week 8:
    - Expand tests for edge cases and concurrency issues
    - Add validation and fallbacks for older environments

  • Week 9:
    - Begin polishing documentation for all async modules
    - Add usage examples and code comments

  • Week 10:
    - Continue refining code quality
    - Perform integration testing with other stdlib modules
    - Prepare release candidate

  • Week 11:
    - Final clean-up and refactoring
    - Submit final blog post or walkthrough (if required)
    - Review checklist with mentor

  • Week 12:
    - Submit final code and documentation
    - Complete GSoC submission form
    - Participate in wrap-up meetings/events

  • Final Week:

Notes:

  • The community bonding period is a 3 week period built into GSoC to help you get to know the project community and participate in project discussion. This is an opportunity for you to setup your local development environment, learn how the project's source control works, refine your project plan, read any necessary documentation, and otherwise prepare to execute on your project project proposal.
  • Usually, even week 1 deliverables include some code.
  • By week 6, you need enough done at this point for your mentor to evaluate your progress and pass you. Usually, you want to be a bit more than halfway done.
  • By week 11, you may want to "code freeze" and focus on completing any tests and/or documentation.
  • During the final week, you'll be submitting your project.

Related issues

No response

Checklist

  • I have read and understood the Code of Conduct.
  • I have read and understood the application materials found in this repository.
  • I understand that plagiarism will not be tolerated, and I have authored this application in my own words.
  • I have read and understood the patch requirement which is necessary for my application to be considered for acceptance.
  • I have read and understood the stdlib showcase requirement which is necessary for my application to be considered for acceptance.
  • The issue name begins with [RFC]: and succinctly describes your proposal.
  • I understand that, in order to apply to be a GSoC contributor, I must submit my final application to https://summerofcode.withgoogle.com/ before the submission deadline.

Metadata

Metadata

Assignees

No one assigned

    Labels

    20252025 GSoC proposal.received feedbackA proposal which has received feedback.rfcProject proposal.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions