What's new/improved in Diamondback
IDE
_ Multiple personality IDE _
The IDE now allows you to create projects and manage for multiple languages and platforms.
C#
Full support for developing C# applications is included in the IDE
Delphi/Win32
Full support for developing Delphi for Win32 applications is included in the IDE
Delphi.NET
Full support for developing Delphi for .NET applications is included in the IDE
Current personality indicator
An icon appears to the right of the menu, indicating which personality is currently active for that project.
_ General IDE changes _
Object Inspector
New look and feel
Better context management
Tool Palette
New look and feel
Better context management
Incremental search improved
Optionally display gallery/repository items in Tool Palette when no project is active
Project manager
Project manager now displays folder structure of project items
Delphi/Win32, Delphi/.NET and C#Builder projects in the same project group.
Alphabetical sorting option
Additional context menu items
Welcome page enhancements
Integrated News feed
Better looking
_ Debugging _
Win32 & .NET debuggers working simultaneously.
Debugging .NET code hosted in a Win32 process.
AppDomain support in the Module view for managed apps (App Domains show up in the module panes and in the scope browser pane)
Sorting in the modules view
Better stack traces in Win32 apps (for frames that don't have debug info)
Locals view allows for changing frames in Win32
Exception notification dialog enhancements
Break/continue buttons
Ignore exception type checkbox
.NET exceptions now show the exception message on dialog
Breakpoint view
Supports in-place editing
Check box to quickly enable/disable breakpoint
Toolbar
"Log call stack" breakpoint action
CPU view showing IL disassembly for .managed processes
Full SSE support including disassembly and SSE register view
Unicode enabling views that show program data (watch, locals, inspector, stack, etc.)
_ Refactoring _
Rename
Extract method
Extract Resource string.
Sync Edit
Find unit/namespace
Declare field
Declare variable
Undo
Currently, Undo uses a local stripe. Changes since the file has been refactored are not monitored. So, before the Undo is applied, a warning comes up asking if you want to perform the Undo. Applying the Undo, your source file will revert changes back to before the refactoring was applied in all files that were modified. This means you will oose any changes that happened in those files since before the refactoring was done.
Note: Undo only does stripes for “Rename” since that is the only refactoring that affects multiple files. The “Extract Method” refactoring is undone in the IDE via Ctrl-Z (regular Undo). Same with declare field and declare variable.
C# & Delphi (Win32 & .NET)
_ VCL designer (.NET & Win32) _
Embedded/non embedded
Left/Top properties can be independently set and persisted with embedded
Can now drag-n-drop from palette
Demand loading of Win32 design-time packages
_ Persistent bookmarks _
_ Versioning _
Multi-level backups with History view
StarTeam integration
_ Main menu item _
_ StarTeam Project management _
Create
Check in/out
create directories
_ Embedded client _
_ External client launching _
_ Project Manager _
Project groups
Manage associations for project groups
_ Structure pane _
_ Items pane files open in IDE _
_ History view StarTeam aware _
_ locking/unlocking/merging _
_ Change requests _
_ File renames are tracked _
SCC API improvements?
_ Error insight _
Expanded real-time error information for source
Integration into the structure view.
_ Help insight _
Tooltip from XML doc information
_ Updated/consolidated new component wizard _
Combines all functions of New VCL component/import AX Type library/control
Open API
_ New Open Tools API services _
Structure View API (native and managed)
History View API (native and managed)
Property Inspector API (native and managed)
Tool Palette API (native)
Better main Toolbar/menu services
Splash Screen and About Box services (native and managed)
Syntax highlighting services (adding new syntax highlighting styles)
Code-insight services (for adding new code-insight handlers)
Compiler
_ XML doc option for compiler in IDE _
This compiler option will generate an XML file with the same "first name" as the original source file, in the same directory as the source file. All comments beginning with /// will be extracted into the XML file.
For example, if your source file is named "myfile.pas" the output file will be named "myfile.xml".
_ New for Win32 and .NET _
for..in..do enumeration syntax
This enumeration syntax is commonly referred to as "foreach" syntax.
Function inlining
Diamondback has an INLINE compiler directive and compiler option {$INLINE AUTO|ON|OFF}. The INLINE directive can be specified at end of function declaration. and longname option {$INLINE ON/AUTO/OFF} can be specified before compiling function body (not for per statements).
{$ INLINE ON } is the default. Inline function declared with INLINE directive will be expanded at the call site.
{$INLINE AUTO} is ike {$ INLINE ON }, except the compiler tries to make an inline function even if the INLINE directive is not specified, if the function code size is less than or equal to 32 bytes. With {$INLINE OFF}, the inline directive is ignored for function declarations and inline functions are not expanded at the call site.
Here is a simple example.
{$APPTYPE CONSOLE}
procedure Sum(N :Integer): Integer; inline;
var
I: Integer;
begin
Result := 0;
for I := 1 to N do
Inc(Result, I);
end;
procedure Test;
begin
WriteLn(Sum(10));
end;
begin
Test;
end.
// procedure Test is equivalent to:
procedure Test;
var
t1, t2, t3, t4: Integer;
begin
t1 := 10;
t2 := 0;
for t3 := 1 to t1 do
Inc(t2, t3);
t4 := t2;
WriteLn(t4);
end.
Inlining rules
- Don't rely on $INLINE AUTO when you're trying to measure the performance or code differences of inlining. $INLINE AUTO is more restrictive / less likely to select your routines for inlining than when you declare the function with the inline directive.
- Look out for cross-unit effects. Inlining a routine at a call site within its own unit is a very different situation than inlining a routine imported from another unit. Also, compiling the other unit at the same time as compiling the call site (build all) is a different situation than inlining a function that was loaded from a precompiled.dcu.
- $INLINE AUTO is considerably more experimental than declared inlines. Our primary objective with $INLINE AUTO right now is to verify that your programs continue to work as they do without inlining, and maybe some functions get inlined here and there as well. $INLINE AUTO will not be the default setting, will probably never be the default setting, and will not be recommended for general coding scenarios. $ INLINE ON is the default and recommended path. $INLINE AUTO is the corner case.
- It's acceptable for this release for the compiler to refuse to inline a routine in seemingly trivial situations. We can sort out the corner cases on a time permitting basis as long as inlining works in specific useful cases.
- When diagnosing a case that does not inline, carefully whittle down the contributing factors until the test case does inline: parameters and local variables of the inlined function, parameters and local variables at the call site, same unit or cross-unit, build all or load from dcu, compiler options such as range checking or overflow checking, and so forth.
- Functions are not inlined across package boundaries. Functions can be inlined between units within a package, though.
- Virtual methods are not inlined. This includes methods declared virtual, dynamic, or message, and all methods of interfaces and dispinterfaces.
- Functions are not inlined between circularly dependent units. The interface and implementation sections of unit A must be fully compiled before unit B calls to functions in unit A may be inlined.
- The RTL and VCL will receive light inlining (by explicit declaration) where the benefits are the greatest. The "macro" functions in Windows.pas, for example, will be marked for inlining. VCL in general, though, will not be marked for extensive inlining, partly for schedule reasons and partly because the VCL core units are heavily circular.
- Functions implemented using asm blocks are not inlinable.
- Functions with open array parameters are not inlinable. (dynamic arrays and static arrays are ok)
- Functions that refer to private or protected members of a class are not inlinable except within methods of that class itself (or possibly descendents, in the case of protected)
- Functions that refer to symbols declared in the implementation section of a unit are not inlinable. Such types are not addressable outside of their unit of definition.
- This list is not complete and may contain errors or omissions.
support for compiling Unicode and UTF8 source files
Multi-unit namespaces
Unicode identifiers
The Delphi compiler now supports Unicode characters in source code identifiers, and in symbols imported from assembly metadata.
- Unicode characters are accepted in identifiers only when the source file encoding is UTF8 or UCS2. High-ascii chars in an identifier in locale-based source will produce an “invalid character” error message just as it did before. Note that source code given to the compiler by the IDE is always encoded in UTF-8. You’ll see differences with the command line compiler since it has to read the files directly.
- The compiler is oblivious to the actual content of the Unicode chars. It sees them only as an opaque UTF8 payload. There is no analysis to see if a Unicode char is a special whitespace or punctuation char that probably shouldn’t be allowed in a program identifier. Validation of the unicode chars may be added in the future.
- Unicode identifiers are handled as case-insensitive strings, just as with traditional Pascal identifiers
- This should have no effect on existing source code. There will probably be glitches in the food chain downstream of the compiler (code insight, error insight) but those can only be reached by using source code that was previously invalid.
- Unicode characters are not allowed in published property, field, or method names. This is to prevent “funny chars” from showing up in the RTTI and upsetting third party VCL code that uses RTTI.
- Applies to Delphi for .NET and Delphi for Win32
New wild-card "uses" syntax (a.b.*)
_ Win32 only _
Unit initialization consolidation optimization?
_ .NET only _
CF support
DCCIL codegen targeting the .NET Compact Framework should work in Diamondback.
Delphi relies on a .NET function “RunClassConstructor” to touch the unit type and induce initialization if it has not already been done. This function is not implemented in .NET CF.
If the compiler can’t locate the RunClassConstructor function, it will emit a warning and skip the unit-touching codegen step. This means on CF the order in which your units are initialized is determined solely by when your code touches symbols in those units. The order is not determined by the order of the units in the uses clause.
For the desktop .NET platform, unit initialization sequencing is the same as before.
Forward declared record types
Runtime
_ COM/Interop _
Wizards
COM+ Object
COM+ Event Object
COM+ Subscription Object
Remote Data Module
Type library
ActiveX library
Virtual Library Interfaces
Import .NET control for Win32
Register/Unregister ActiveX server
_ VCL _
New components (TButtonGroup and TCategoryButtons; used as basis for new palette).
Better encapsulation of IE WebBrowser component
New TCaptionedDockTree (Dock tree used in IDE).
Various Windows "macro" functions now inlined.
New design time support for Help text in OI
New design time support for hot-link pane in OI
Support for enumerator syntax
_ VCL.NET _
Now supports Weak Packaged units
Security audits done to allow GUI VCL applications to run in < full trust environments for 20% faster performance
Various Windows "macro" functions now inlined.
Support for enumerator syntax
Internet/ASP.NET
_ ASP.NET/ECO _
_ Project manager improvements _
Directory management
Show all files
Context-sensitive new files
web config
page
_ ASP.NET/HTML Error Insight _
_ Deployment manager wizard _
ASP.NET
IntraWeb
_ Designers _
Rubber band (mouse drag) control selection in the designer
Improved Tag Editor support (editing of outer html for most tags)
Edit | Select All Controls
Improved pasting
Template Editor
Run as Server control
_ Editors _
CSS syntax highlighting
CSS code completion
HTML Structure pane
HTML Tidy has been updated to the latest version
_ Lots of bug fixes _
_ Web Control wizard improved _
_ Improved TWebBrowser _
_ Better code reformatting _
- If your page has an
1<html> _and_ <body> tag and you use the designer and modify the page when you click back to the code editor we will reformat the entire contents of the file excluding any <@ xxx ...> directives.
2 2. If you have a BODY tag and are missing the <html> tag and you modify the page from the designer you will get back a page that includes both an HTML _and_ BODY tag. Additionally, the entire contents of the file will be formatted (including the <html> tags and any tags between HTML and BODY which is different from D8).
3 3. If you don't have either an <html> _or_ a <body> tag and you use the designer and modify the page you will get back only your markup without <html> or <body> tags. Again, this formatting excludes the <@ xxx> directives they will remain at the top of the file. This makes it possible to work with XML files (like RSS feeds) in the designer and it will not add additional <html> or <body> tags around your markup however it will format your markup.
4 4. Previously, we were attempting to format the smallest amount of text possible and trying to find/replace the body tags but with the nature of HTML (that being inherently broken <g>) it caused various problems and resulted in jumbled .aspx files. The new mechanism will be reformatting the entire contents of the file and therefore we won't be doing any tag replacement thus avoiding the previous problems.
5
6
7
8FYI, these changes will show up in a post Borcon build.
9
10## _ _
11
12## _ DBWeb controls _
13
14### ECO support
15
16### DBWeb control wizard
17
18### DBWebDataSource improvements
19
20#### OnAutoApplyRequest
21
22#### CascadingDeletes
23
24#### CascadingUpdates
25
26#### XML file support
27
28##### _ XMLFile _
29
30##### _ XMLSchemaFile _
31
32##### _ AutoUpdateCache _
33
34##### _ UseUniqueFileName _
35
36### Navigation API
37
38#### RegisterNextControl
39
40#### RegisterPreviousControl
41
42#### RegisterFirstControl
43
44#### RegisterLastControl
45
46#### RegisterInsertControl
47
48#### RegisterDeleteControl
49
50#### RegisterUpdateControl
51
52#### RegisterCancelControl
53
54#### RegisterUndoControl
55
56#### RegisterUndoAllControl
57
58#### RegisterApplyControl
59
60#### RegisterRefreshControl
61
62#### RegisterGoToControl
63
64### New & Improved Controls
65
66#### EcoDataSource
67
68#### dbWebNavigationExtender
69
70#### DBWebAggregateControl
71
72#### dbWebSound
73
74#### dbWebVideo
75
76#### DBWebImage enhancement for external links
77
78### Locate Support
79
80### Lookup Support
81
82# Database
83
84## _ BDP _
85
86### Metadata services
87
88#### Schema creation
89
90##### _ Create table, view, index _
91
92##### _ Alter table _
93
94##### _ Drop table, view, index _
95
96#### Data migration
97
98##### _ bdpCopyTable component _
99
100### Stored procedure dialog
101
102### AutoUpdate
103
104#### multi-table resolving
105
106#### error handling
107
108### Provider improvements
109
110#### InterBase Boolean
111
112#### Oracle packages
113
114#### localized table name support
115
116#### Schema Name list retrieval
117
118#### Sybase 12.5 support
119
120## _ Data remoting _
121
122### DataHub
123
124### DataSync
125
126### RemoteConnection
127
128### RemoteServer
129
130## _ Data Explorer _
131
132### Data migration
133
134### Drag and drop stored procedures, and automatic parameter population
135
136### Metadata services
137
138#### Create table
139
140#### Alter table
141
142## _ Designers & Wizards _
143
144### Stored procedure dialog
145
146### Table mapping dialog
147
148### Stored procedure drop down list
149
150### SchemaName drop down list
151
152### Typed datasets (.NET)
153
154#### Compile to standalone assembly
155
156#### Support datasets from Web Services
157
158#### Relations and table editors
159
160#### Properties dialog
161
162### SQLConnection string editor
163
164## _ dbExpress _
165
166### Metadata improvements
167
168### TSimpleDataSet for .NET
169
170### CommandText editor
171
172### SchemaName discovery
173
174### TSQLStoredProc performance improvements
175
176### TDataSet consumes IListSource
177
178### Driver enhancements
179
180#### MySQL
181
182#### DB2
183
184#### Oracle numeric parameter binding
185
186## _ BDE for .NET _
187
188### Dynamic loading of DLLs w/o path
189
190### Blob performance improvements
191
192### TUpdateSQL
193
194### TNestedTable
195
196### TStoredProc
197
198## _ dbGo for .NET _
199
200## _ DataSnap for .NET _
201
202### Remoting
203
204#### DCOM
205
206#### Socket
207
208### TLocalConnection
209
210### TConnectionBroker
211
212### TSharedConnection
213
214# Unit Testing
215
216## _ NUnit (.NET) support _
217
218## _ DUnit (Delphi/Win32) support _
219
220## _ New test case (Delphi & C#) _
221
222## _ New test project (Delphi & C#) _
223
224# Deployment services
225
226## _ XCopy deployment _
227
228## _ FTP deployment _
229
230## _ Pluggable architecture _
231
232## _ Comparison engine _
233
234# Modeling/UML
235
236## _ ECO _
237
238### Now supports ASP.NET projects
239
240### Pluggable ECO tools in EcoDesigners
241
242### Component editors
243
244#### handles now filter out circular references
245
246### Tools
247
248#### Build an XML mapping file based on default mapping of current model
249
250#### Generate code and XML mapping from existing DB schema
251
252### General options
253
254#### Auto compile
255
256#### Activity help: on EcoDesigners, ECO components have flyover hints explaining what can be done and what has been done
257
258#### Hook up EcoSpace components automatically
259
260### Package selector
261
262#### flyover hint for packages now displays all classes in that package
263
264#### Packages in references DLLs now appear as selectable
265
266### New templates
267
268#### New ECO ASP.NET application
269
270#### PersistenceMapperProvider for PersistenceMapper pooling
271
272#### ECO.WebServices
273
274### ECO run-time enhancements
275
276#### Thread safe persistence mapper
277
278#### Persistence mapper pooling (local and remote)
279
280#### ObjectSpace pooling in ASP.NET apps
281
282#### Improved autoforms
283
284#### Full support for arbitrary OR mapping to existing schemas
285
286#### Handles revised for speed
287
288#### Synchronization of object spaces
289
290#### Programmatic access to conflict resolution
291
292#### Highly improved access to change framework behavior
293
294## _ Together modeling _
295
296### General source code diagramming
297
298### Class model view
299
300### ECO integration
301
302# Translation manager
303
304# QualityCentral
305
306## _ Tools menu client _
307
308## _ IDE incident reporting _
309
310# J2EE/EJB interop with Janeva
311
312## _ Delphi and C# support _
313
314## _ C# wizard _
315
316## _ Select individual or all EJBs from a J2EE archive (EAR or JAR) to generate the client for _
317
318## _ Automatically parses vendor-specific (BES, Weblogic and Websphere) Deployment Descriptors for the correct JNDI name to bind to _
319
320## _ Generates a ServiceLocator for easy, one step, EJB binding and home interface access _
321
322## _ Generates assemblies (instead of .cs) for .NET language transparency _
323
324## _ Automatically creates an app.config file with the required Janeva parameters _
325
326## _ It has cool About box and Splash screen icons :) _
327
328# XMLDoc tool (unsupported)</g></body></html></body></html></body></html></html></html></body></html>