Project TitleSolang: LALRPOP Parser, Intermediate Code Representation (ICR), and Code Optimization
Status

IN PROGRESS

Primary Focus

RESEARCH DOCUMENTATION

Description 

Our goal is to provide comprehensive documentation of the LALRPOP Parser, Intermediate Code Representation (ICR), and Code Optimization techniques utilized in Solang.

Solang is a compiler for the Solidity Programming language, targeting the Ethereum Virtual Machine (EVM) and WebAssembly (Wasm) platforms. The documentation will encompass a detailed exploration of the parser's functionality, the structure of the intermediate representation, and various code optimization strategies employed within Solang.

Additionally, we aim to propose improvements and enhancements to these components based on the latest research and advancements in compiler construction. Specifically, we will focus on suggesting advancements in error handling techniques, enhancing the ICR, and introducing more effective code optimization techniques.

Learning Objectives

  • Understanding of Compiler Components:

    • Gain a comprehensive understanding of the components of a compiler, including lexical analysis, parsing, semantic analysis, intermediate code generation, and code optimization.
  • In-depth Knowledge of LALRPOP Parser:

    • Learn about the LALRPOP parser generator and its usage for generating parsers from context-free grammars.
    • Understand the design principles and implementation details of the LALRPOP parser used in Solang.
  • Exploration of Intermediate Code Representation (ICR):

    • Explore the concepts and principles of intermediate code representation (ICR) in compiler construction.
    • Gain insights into the structure, semantics, and usage of the intermediate representation employed by Solang.
  • Understanding Code Optimization Techniques:

    • Familiarize yourself with various code optimization techniques commonly used in compilers, such as constant folding, dead code elimination, loop optimization, and register allocation.
    • Learn about the specific code optimization techniques implemented in Solang and their impact on compiler performance.
  • Research Skills in Compiler Construction:

    • Develop research skills in compiler construction by studying the latest advancements, research papers, and techniques in the field of compiler optimization and code generation.
    • Analyze and evaluate existing code optimization techniques, identifying areas for improvement and innovation.
  • Documentation Skills:

    • Enhance documentation skills by creating comprehensive documentation for the LALRPOP parser, intermediate code representation, and code optimization techniques in Solang.
    • Practice conveying complex technical concepts in a clear and understandable manner through written documentation.
  • Proposal and Implementation of Improvements:

    • Learn to propose improvements and enhancements to existing compiler components based on research findings and best practices.
    • Gain hands-on experience in implementing suggested improvements, incorporating them into the Solang compiler codebase, and assessing their impact.
  • Proficiency in Rust Programming Language:

    • Improve proficiency in the Rust programming language, as Solang is implemented in Rust.
    • Practice writing and understanding Rust code, leveraging Rust's features for compiler construction

Expected Outcome and Deliverables

  • Comprehensive Documentation:

    • Detailed documentation of the LALRPOP parser, including its design, implementation, and functionality.
    • In-depth exploration of the intermediate code representation (ICR) used in Solang, covering its structure, semantics, and usage within the compiler.
    • Thorough documentation of existing code optimization techniques employed in Solang, including their principles, algorithms, and application scenarios.
  • Research-Based Suggestions:

    • Recommendations for improvements and enhancements based on the latest research and advancements in compiler construction.
    • Suggestions for refining error handling techniques to improve error reporting and recovery mechanisms within the parser.
    • Proposals for enhancing the intermediate code representation (IR) to better support optimizations and facilitate code transformations.
  • Implementation of Improvisations:

    • Implementation of suggested improvements and enhancements wherever applicable, with a focus on enhancing the functionality, performance, and maintainability of the Solang compiler.
    • Integration of refined error handling mechanisms, enhanced IR features, and improved code optimization techniques into the Solang compiler codebase.

Relation to Hyperledger 

  • Core Contribution: Hyperledger Solang

Recommended Skills

  • Background in Compiler Construction: Proficiency in compiler construction principles and techniques, including lexical analysis, parsing, semantic analysis, and code generation.
  • Basic Knowledge of Rust: Familiarity with the Rust programming language, as Solang is implemented in Rust. Understanding of Rust's syntax, features, and ecosystem will be beneficial for contributing to the project.
  • Understanding of Common Data Structures and Algorithms: Knowledge of common data structures (e.g., arrays, linked lists, trees) and algorithms (e.g., sorting, searching) used in software development and compiler construction.
  • Willingness to Learn New Concepts: Eagerness to explore and learn new concepts, tools, and techniques related to compiler construction, Rust programming, and code optimization.
  • Analytical and Problem-Solving Skills: Ability to analyze complex problems, identify areas for improvement, and propose effective solutions within the context of compiler construction and optimization.

Mentor Names and Contact Info

Email: r_ramaguru@cb.amrita.edu

Designation:


Email: kn_ambili@cb.amrita.edu

Designation:

References


5 Comments

  1. I am unable to apply for this mentorship. 
    It's giving me an error that only 3 per term are allowed but I have applied to only 2.
    Kindly look into it.

    1. arusharmazxx000@gmail.com please contact support on the application portal LFX Mentorship https://mentorship.lfx.linuxfoundation.org/. You can find Support under the question mark icon at the top right hand corner of LFX Mentorship.

  2. I tried that already  but there was no response from their end.

    1. What's the ticket number? I can help look into it. Also please give support team at least 2 business days to respond.

  3. Hi it's resolved now.
    They were double counting my registration for 1 project.