Team2 newlang design - #23
Open
mayank-ramnani wants to merge 1 commit into
Open
Conversation
marwanabdelhameed
force-pushed
the
team2-newlang-design
branch
from
November 27, 2024 04:03
528822a to
c885b17
Compare
Code Review byJasmine Wu (@jazwu) Overall CommentsThis PR introduces a critical new feature for the redesigned ShadowDash language. While the implementation is robust and comprehensive, improvements in structure and documentation can enhance clarity and ease of review. Feedback1. Change Granularity
2. Correctness & Functionality
3. Readability & Structure
4. Standards Compatibility
5. Testing
SummaryThis PR demonstrates strong engineering work and adherence to ShadowDash standards. Addressing the comments on granularity, commit structure, and documentation will make the review process smoother and improve clarity for stakeholders. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Core Components
We are using the string_view for memory efficiency like in the Expression class, representing three types of command components
Our Build class uses vectors to maintain input/output relationships and order
We implemented thread-safe job management (POOL) using atomic counters
Data Structures
unordered_map for rules/variables (O(1) lookup)
vector for builds (preserves order)
string_view throughout to minimize copying
optional for rule attributes
Build Process
The system recursively checks dependencies using file timestamps and handles missing files and circular dependencies. We used atomic operations for thread safety during parallel builds.
Testing
Currently, this was tested on a small subset of files in zlib (not setting up BUILD for all targets just for testing). Will wait until we get a full converted main.cc that was converted from a build.ninja that matches our language to test fully.