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
  1. In code model implementation
  2. In folding
  3. 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:
  1. 115628 C indenting of fun arglists (AS)
  2. 126622 Static function is missed in Code Completion listbox (NK)
  3. 126434 'Find Usages' doesn't search occurrences in all opened projects (VV)
  4. 115981 Code Completion: Smart pointers do not work (VV)
  5. 127408 140 useless classes initialized on startup in CND (VK)
  6. 110797 Support Mach-O format in the Discovery wizard (SG)
  7. 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

Minutes

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo