CNDLanguageModelTeamMeetings
SPb SunStudio IDE Local i-team meetings
Schedule:
Tuesdays, 15:00, SPB04, room #4005
Contents |
Proposal for the future meetings agenda
Here is a place to put the items you'd like to discuss during the nearest i-team or further i-teams
November 7, 2007
Date: Wednesday, November, 07
Time: 18:00
Location: SPB04, room #4005
Agenda
- 6.x planning: code model issues (continued)
- 6.x planning: new reqs
Minutes
Projects for SXDE
Ideas
- Substitute welcome page to one that contains Open Solaris information and "links", that allow to open Open Solaris projects.
- It would be fine to separate IDE projects for different users. The proposal (AS) is to place them into $OPENSOLARIS/ss_projects/${USER}/... (where $OPENSOLARIS is a place to which the Open Solaris sources are extracted). It would be fine to place them to the user home dir, but AS thinks it might have negative effects.
- Place the action (that launches the script) not only to desktop, but to the menu "Development Tools"
- Fun: how to hack "echo" :-) it would be fine to write a brief "howto"
Questions
- How to substitute welcome page
- How long will it take for us to build ON with dwarf, prepare projects, etc?
- When will the build for SXDE be ready?
- An icon for launching Sun Studio
- What is the directory we place opensolaris in? (AS proposes /export/opensolaris/testws)
Requirements (for SXDE release engineers)
- Include build tools to distribution
- Make necessary directory(ies) (to which sources will be put) with write access granted to all at the moment of installation, so that later on, when running script, user won't have the issue with access privileges
October 30, 2007
Date: Tuesday, October 30
Time: 14:30
Location: SPB04, room #4005
Agenda
- Services for large projects (such as Open Solaris)
- Preliminary 6.x planning: code model infrastructure issues
Minutes
CND 6.0 Web materials (edited from prev. meeting)
- Existing content update and cleanup (All)
- Code Model API overview (VK)
- Writing Mark Occurences Plugin using code model and XRef APIs (SG)
- Writing a simple code analyzer plugin (a la "Find Bugs") using code model API (VK)
- A brief C/C++ pack features demo (VV)
- An article on using make-based projects, code assistance and discovery (AS)
- Writing a New Class Wizard plugin (VK)
Services for large projects (such as Open Solaris)
For 6.0
- Go to Definition service: returns CsmReference. Clients (Class View, Hyperlink, Go to Function or Variable) use it (AS)
Not to do now:
- FileOwnerQuery - not for this release. 6.1
- File w/o a project
Code model infrastructure issues
- Clean up non-UID branches (6.1, early stage)
- File w/o a project (6.1)
- UID utilities - eliminate unnecessary instantiation (6.1)
- Repository: optimize RAM (indexes, probably more.) (Investigate: 6.1; solve: TBD)
- Utilities module: string sharing
- Project system: RAM optimization.
There are no project system unit tests, so it's difficult to refactor.
- Dynamic tests (functional) (6.?)
- "Premium support for active file"
- Incremental reparse (future)
- Expression-level model is absent / completion-level parsing (future)
- Symtab that is filled at the moment of rendering, is cached => the access is fast (6.1)
Xref
- "Visitor" - ability to walk through all references and fast resolve them.
We need this for semantic highlighting.
- Macros:
#define init_x x=0; class C { int x; C() { init_x; // no x usage will be found } };
October 23, 2007
Date: Tuesday, October 23
Time: 14:30
Location: SPB04, room #4005
Agenda
- Preliminary 6.x planning
- Code line for 6.x development
Minutes
CND 6.0 Web materials
- An example of GUI Application (Qt)
- Existing content update and cleanup
- Class wizard
- Wizard for some GoF pattern?
- Simple code analyzer
CND 6.1 planning:
We were not in time to complete the 6.x review. That's what we listed so far
Features
- Class Wizard (AS, Collateral for 6.0)
- Auto #include (and auto using) for code completion (!)
- Override, Implement, copy ctor, op =, getter, setter
- Syntax error HL
- GUI Editor
- Find Usages
- Call Tree
Issues
- Bad error recovery for persistence-related NPEs
- Accuracy (a topic for additional discussion)
- Fortran & Class View (+ asm?)
- ANTLR 3 - NO
- Accuracy tests
Infrastructure
- PCH
- Lookup: CsmObject -> DataObject + Listeners
- Pluggable repository?
Misc
- Evaluate 40 P3s
- Editor Lexer and sytax HL refactoring (SG)
- Open API
Language model issues (summary)
Code model infrastructure issues
Areas
There are four areas that make us think about infrastructure changes.
- Accuracy. There are some language model issues that can not be solved without infrastructure changes.
- Performance. This concerns both memory and CPU usage. Now the main concern here is memory. But there are some responsiveness-related issues that needs infrastructure changes as well.
- Quality. The design flaws that causes defects - deadlocks, assertions, exceptions, etc.
- Features. The infrastructure changes that are necessary for implementing new features or enhancements.
Code model infrastructure issues by the above areas
Quality
- Clean up non-UID branches is needed (6.1, done)
- Repository refactoring - a lot of issues that were recently found (6.1, "A", 2w)
- Using Lookup pattern for finding related objects (6.1, "A", 3w)
- Repository/Model: Bad error recovery for persistence-related NPEs (future?)
- "Generations" model proposed by VV (future)
- Dynamic tests (functional?) (6.?, "A", 4w) - the most risky one
Accuracy
- Symtab that is filled at the moment of rendering, is cached => the access is fast (6.1, "B", 3w)
- Expression-level model is absent / completion-level parsing (future)
- Error recovery (future)
- Typedefs are used the same way as classifiers
- Types should be "chained"
- Template instantiation related API is absent
- Macro-dependent headers reparse (future)
- Accuracy tests are absent
Performance
- UID utilities - eliminate unnecessary instantiation (6.1, "B", 3w) (matters for memory consumption too)
- "Premium support" for active file or open files (6.1?, "B", 3w)
- Incremental reparse (future)
- Incremental name resolving (future)
- PCH (future)
- Smart PCH infrastructure that 1) can be used by clients 2) tracks context/scope of the changes (if modif. is within block, ...) (future)
- API "deep" extensions (CsmToken?) + moving CsmReference inside model (future)
- Parser and code model (future)
- Expressions in model (future)
Memory consumption
- UID utilities - eliminate unnecessary instantiation (matters for performance too) (6.1, "B", see above)
- Repository: optimize RAM (indexes, probably more.) (Investigate: 6.1; solve: TBD)
- Indexes: 6.1, "B"?, 3w
- Utilities module: string sharing (6.1, "A", 0.5w)
- Project system: RAM optimization .There are no project system unit tests, so it's difficult to refactor. (1-st stage: 6.1, "A", 1w to reduce RAM 2x-3x)
Features
- File w/o a project support (6.1, "B", 1w)
Other
- Fortran & Class View (future)
- Asm integration (future?)
- ANTLR 3 - NO
- Two code completion modes. Two reasons: a) speeding up b) NB compatibility (6.1, "B", 1w)
- New lexer common for language model and editor (6.1, "B", 4w). This will solve
- '\' line continuation problem
- Embedded languages (asm, SQL, #pragma based like mpi and openmp, strings, preprocessor)
Xref
This one, I believe, merits more detailed description
- "Visitor" - ability to walk through all references and fast resolve them.
We need this for semantic highlighting.
- Macros:
#define init_x x=0; class C { int x; C() { init_x; // no x usage will be found } };
2008
January 22, 2008
Date: Tuesday, January 22, 2008
Minutes
C/C++ separation
We decided to defer this, since we still don't know the roadmap for parser improvements.
XRef
- Macros issue: usages that present only in macro expansions, aren't found. There might be a compromise: just warn user in the case there were such usages.
AI (VV): Estimate the effort
- Performance isn't yet measured.
AI (AS): Measure the Find Usages performance on a couple of typical examples (say, for MySQL)
Memory
- 16% improvement was achieved (AS)
- OpenSolaris needs 800 Mb JVM heap
- Persistence Indexes consume 40% memory - a room for improvement!
- To decrease peak memory:
AI (AS): Implement lazy collections and make model objects return them; this will avoid massive simultaneous model objects instantiations (iz #115676)
- One more idea is to implement UID-based utilities that use the structure of keys to check the object kind and name. (But this involved modifications in clients, while theidea above does not)
- Getting rid of resident indexes: definitely right thing to do, but most likely not for this release.
- Disk size
AI (VK) Try zipping and get upper limit of what's opssible to achieve
Code Completion
- We now have 3 lexers. Formatter will be rewritten, so it won't use old editor lexer.
AI (VV): Estimate, how long will it take to move completion to new lexer API. Then we'll decide whether it's worth changing this.
- AI (VV): Implement 2-mode with 256 elements limit
Asm
- Ready, uploaded to plugin portal
- Needs to be integrated with debugger (Gordon)?
- Needs to be integrated with language model (hyperlink, etc) - defer to next release
- Needs testing
Call graph
- Uploaded to plugin portal
- A NB-6.0 based version created
- AI (VK): finish and publish user requirements
Service for finding overrides
- Sone (AS).
- AI (AS): add a parameter, whether to search from base class or current one
Mark occurrences
- AI (SG) Add shortcut for going next / prev occurrence
- AI (SG): Add annotations (in the case it costs <= 1 day)
Syntax error highlighting
- AI (VK) Better integration with project system
- AI (VK) Provide highlighting in headers
- AI (VK) Upload to plugin portal
- AI (VK) Make sure absence of compiler doesn't cause delay, crush, etc
Formatter
Is not started yet.
February 12, 2008
Date: Tuesday, February 12, 2008
Agenda
- Formatter solution: brainstorming
Minutes
- Create a service or servives that formatter needs (AS)
- These sevices can be implemented
- In code model implementation
- In folding
- In code completion
February 19, 2008
Date: Tuesday, February 18, 2008
Agenda
- Formatter: the services and their implementation
- New Persistence API
- Road down to 25 P2 bugs
Minutes
- Formatter: AS formulates formatters needs in terms of the SPI interfaces.
- Moving the persistence API to integer keys is preliminary. This should be done in 7.0. In any case an investigation should be performed to estimate the effect on memory.
- P2 bugs to fix this week are:
- 115628 C indenting of fun arglists (AS)
- 126622 Static function is missed in Code Completion listbox (NK)
- 126434 'Find Usages' doesn't search occurrences in all opened projects (VV)
- 115981 Code Completion: Smart pointers do not work (VV)
- 127408 140 useless classes initialized on startup in CND (VK)
- 110797 Support Mach-O format in the Discovery wizard (SG)
- 99834 Assertion error for KeyBasedUID (downgrade: VK)
March 11, 2008
Date: March, 11, 2008
Agenda
- The structure and use of elif server
- SPI for registering / searching function definitions and project dependencies