C++Builder 2010 Boost support (Update)
Today’s update includes welcome news for some.
circular_buffer and pool now pass 100%
Serialization has been added back to the list of supported libraries.
There have been big improvements in thread and date_time
The full rundown follows:
The following compile and pass boost’s regression suite 100% and are included in C++Builder 2010’s Updates:
algorithm/minmax
algorithm/string
any
array
circular_buffer
crc
disjoint_sets
format
functional
logic
pool
property_map
signals
static_assert
system
tokenizer
tuple
utility/swap
The following are included in C++Builder but do not pass 100%:
| Library | compile | run |
| unordered | 100.00 | 96.67 |
| config | 100.00 | 88.89 |
| integer | 100.00 | 83.33 |
| optional | 100.00 | 80.00 |
| conversion | 100.00 | 71.43 |
| dynamic_bitset | 100.00 | 50.00 |
| filesystem [1] | 100.00 | 75.00 |
| io | 100.00 | 50.00 |
| timer | 100.00 | none |
| regex | 97.78 | 97.14 |
| serialization | 96.17 | 97.67 |
| type_traits [2] | 96.00 | 94.44 |
| iostreams | 94.74 | 97.14 |
| bind | 93.75 | 100.00 |
| smart_ptr | 93.48 | 100.00 |
| functional/hash | 93.10 | 100.00 |
| test | 92.86 | 100.00 |
| math | 92.86 | 24.60 |
| tr1 | 92.24 | 80.33 |
| thread | 91.30 | 55.26 |
| mpl | 91.11 | 100.00 |
| range | 90.91 | 100.00 |
| function | 90.91 | 87.50 |
| function_types | 90.48 | none |
| utility | 88.00 | 100.00 |
| utility/enable_if | 87.50 | 100.00 |
| iterator | 86.96 | 100.00 |
| asio | 86.07 | 100.00 |
| date_time | 85.53 | 91.80 |
| variant | 83.33 | 100.00 |
| numeric/interval | 80.00 | 100.00 |
| exception | 75.76 | 92.86 |
| parameter | 71.43 | 100.00 |
| concept_check | 69.23 | 100.00 |
| assign | 69.23 | 100.00 |
| numeric/conversion | 50.00 | 100.00 |
| typeof | 48.72 | 100.00 |
| spirit | 44.44 | 100.00 |
| gil | 40.00 | 100.00 |
[1] runtime failures in filesystem are due to problems with wide character support differences.
[2] You should probably be using our intrinsic type-traits instead
The following are *not* included in C++Builder 2010
accumulators
bimap
flyweight
foreach
fusion
graph
interprocess
intrusive
lambda
multi_array
multi_index
numeric/ublas
program_options
proto
ptr_container
python
random [3]
rational
scope_exit
signals2
statechart
units
wave
xpressive
[3] We include the dinkumware random libraries, which should provide you with the same routines.
Stay tuned to code central for an updated version of the full sources which can be used to build unsupported libraries.
Share This | Email this page to a friend
Posted by David Dean on November 11th, 2009 under Uncategorized | 15 Comments »C++Builder 2010 Boost support
C++Builder 2010 is the second release to ship with portions of the boost project.
We are only shipping a subset of these libraries.
The following compile and pass boost’s regression suite 100% and are included in C++Builder 2010:
algorithm/minmax
algorithm/string
any
array
crc
disjoint_sets
format
functional
logic
property_map
signals
static_assert
system
tokenizer
tuple
utility/swap
The following are included in C++Builder but do not pass 100%:
| Library | compile | run |
| config | 100.00 | 88.89 |
| conversion | 100.00 | 71.43 |
| dynamic_bitset | 100.00 | 50.00 |
| filesystem | 100.00 | 75.00 |
| integer | 100.00 | 83.33 |
| io | 100.00 | 50.00 |
| optional | 100.00 | 80.00 |
| timer | 100.00 | none |
| type_traits [1] | 96.00 | 94.44 |
| regex | 93.33 | 93.94 |
| functional/hash | 93.10 | 100.00 |
| test | 92.86 | 100.00 |
| math | 92.86 | 24.60 |
| tr1 | 92.24 | 80.33 |
| mpl | 91.11 | 100.00 |
| range | 90.91 | 100.00 |
| function | 90.91 | 87.50 |
| function_types | 90.48 | none |
| unordered | 90.00 | 96.30 |
| utility | 88.00 | 100.00 |
| utility/enable_if | 87.50 | 100.00 |
| iterator | 86.96 | 100.00 |
| asio | 86.07 | 100.00 |
| variant | 83.33 | 100.00 |
| numeric/interval | 80.00 | 100.00 |
| exception | 75.76 | 92.86 |
| circular_buffer | 75.00 | 100.00 |
| parameter | 71.43 | 100.00 |
| date_time | 69.88 | 90.74 |
| concept_check | 69.23 | 100.00 |
| assign | 69.23 | 100.00 |
| numeric/conversion | 50.00 | 100.00 |
| typeof | 48.72 | 100.00 |
| spirit | 43.96 | 100.00 |
| gil | 40.00 | 100.00 |
| thread | 26.09 | 75.00 |
[1] You should probably be using our intrinsic type-traits instead
The following are *not* included in C++Builder 2010
accumulators
bimap
flyweight
foreach
fusion
graph
interprocess
intrusive
lambda
multi_array
multi_index
numeric/ublas
pool
program_options
proto
ptr_container
python
random [2]
rational
scope_exit
serialization
signals2
statechart
units
wave
xpressive
[2] We include the dinkumware random libraries, which should provide you with the same routines.
For those of you who would like to experiment with the unsupported libraries, you can download the source we used from code central
The commands needed to build it are:
set BOOST_ROOT={Path to extracted files}
cd %BOOST_ROOT%
echo using borland : 6.2.0 : “C:/Program Files/Embarcadero/bin/bcc32 : ; > user-config.jam
set BOOST_LOG=buildboost.log
rd /Q /S stage bin.v2
bjam -a --v2 --build-type=complete --user-config=user-config.jam -l300 borland-6.2.0 stage > %BOOST_LOG% 2>&1
You can copy
stage\lib\* to $(BDS)\lib
and repoint CG_BOOST_ROOT to %BOOST_ROOT% to use the version of boost you have rebuilt.
Share This | Email this page to a friend
Posted by David Dean on September 23rd, 2009 under Boost, C++Builder 2010, ednfront | 14 Comments »Riverblade announces support for C++Builder in LintProject Professional
In a blog post, Riverblade has announced support for BCB5 though CBuilder 2009.
This is exciting because it makes it much easier to use PC-Lint for C++Builder users.
If you aren’t familiar with PC-Lint, it is a popular static code analysis tool for C and C++.
P.S. The format for project files won’t be changing between C++Builder 2009 and C++Builder 2010, so if you choose to use this tool, it should work with C++Builder 2010 without any issues.
[Edit] They’ve added more details on C++Builder support.
Share This | Email this page to a friend
Posted by David Dean on August 18th, 2009 under 3rd Party Tools | 5 Comments »C++Builder 2010 and the new Class Explorer
The most requested feature for C++ Builder is for the Class Explorer. You can see the QC here: QC23836.
I am pleased to announce that this feature is going to be available in Embarcadero RAD Studio 2010 and C++Builder 2010. It’s been rewritten from scratch to have good performance and a great user interface:

The pane on the left has all the objects and declarations in your project. It can be sorted by kind or alphabetically. It can also be grouped different ways. By namespace, file, inheritance, or custom grouping:
Custom groups should be easy to add:
Selecting items in the left hand pane will show you where it is defined in the source code
You can also select each of the references in the top panel and be shown that portion of the source code:
Right clicking gives you several additional options. You can go to the definition or declaration, and you can add fields, methods, or properties to your classes:
Adding a field, method or property is made quite easy:
As you can see the wizard for adding a new property allows you to create getters/setters or use existing fields or methods, as well as make them read/write only. It’s quite versatile and should be a real time saver.
There is also a great utility for graphing your class heierachies. Here I selected TObject and all the exception types that descend from TObject:
You can also customize these graphs and save them in SVG format.
Writing this sneak peek has gotten me really exited about the upcoming release. I hope you are all excited as well.
Share This | Email this page to a friend
Posted by David Dean on August 4th, 2009 under C++Builder 2010 | 5 Comments »What is an Internal Compiler Error?
The documentation team recently asked me to look over a help topic about Internal Compiler Errors. The content included no information for C++ users, so I wrote this quick draft. I hope they’ll do a better job than I did, but since this topic comes up often enough in the newsgroups, I figured posting it in my blog would be a good point of reference when the topic does come up
There are three kinds of errors that the C++ compiler generates that we group together as ICEs:
F1001
[C++ Fatal Error] (): F1001 Internal code generator error
F1004
[C++ Fatal Error] (): F1004 Internal compiler error
internal backend error
All three of these result from bugs in the compiler. The and elements are the point in your source code that the compiler was parsing prior to the error, but may or may not indicate the source of the problem. The element is specific information to tell the compiler engineers what the compiler was trying to do when the error occurred.
What to do if you encounter an internal compiler error
1) remember that your code may not be at fault.
2) try a clean build
3) try a command line build
4) analyze the source to narrow the problem
5) submit a bug report
How to perform a clean build:
1. right click on the project in the project manager and select "clean"
2. check the directory structure to make sure there are no .obj .tds .dcu .#* .pch or .csm files associated with your project
3. Choose Build from the project menu.
How to do a command line build:
1. You can copy the compiler’s command line from the Output tab in the messages pane and use that in a command shell or
2. Choose the "Rad Studio Command Prompt" from your start menu and then type msbuild yourproject.cbproj
If neither a clean build nor a command line build resolves the problem, you may want to analyze the source code to narrow the problem down.
1. Preprocess the file which is mentioned in the error message. This can be done by either right clicking on the file in the project manager and choosing preprocess, or by going to the command line and replacing the compiler (bcc32.exe) with the preprocessor (cpp32.exe) in the command to compile the file. This will generate a file with no external dependencies for compilation and may be a very large file.
2. compile the preprocessed file with the -P switch If this is sufficient to reproduce the problem, you may go straight to step 4.
3. if the .i file compiled correctly, there may be additional switched needed to reproduce the problem. recompile the .i file adding any switched used for the original command line build until you determine which switches are needed to reproduce the problem.
4. This is enough information to file a bug report. If you do not wish to narrow down the problem any further please go to the instructions for filing a bug report.
5. You can delete anything after the line where the error occurs and any comments.
6. Start to comment out function bodies and other portions of code which may not have anything to do with the problem.
7. as you determine portions which are not necessary to reproduce the problem, you may delete those sections from the .i file.
8. Once you have narrowed down the elements of code necessary to reproduce the problem, you can then submit a bug report and analyze the type of constructs used to try and find a workaround
How to file a bug report:
1. Choose Quality Central from the Tools menu in the IDE.
2. Click on the ‘+’ button to create a new report
3. Choose C++Builder as the project
4. Choose Compiler/C++ as the area
5. Enter the command line needed to reproduce the error in the steps of the bug
6. attach the .i file
7. click the check mark button to save the report.
Share This | Email this page to a friend
Posted by David Dean on February 13th, 2009 under C++Builder 2007, C++Builder 2009, Quality Central | 15 Comments »Call for sysops [Update]
The QC stats link (which I posted in this earlier entry asking for sysop volunteers) isn’t working, so I thought I’d update it with a manual query:
| Delphi | Delphi Prism | C++ | |
| 1/19/2009 | 3249 | 0 | 88 |
| 10/10/2007 | 4008 | N/A | 107 |
I don’t have a reliable method of verifying this, but when I first started as a sysop C++ had over 400 reports that hadn’t been moved out of the "reported" status.
You can help. Please let me know. The quality of Delphi will only get better as more sysops help focus in on this backlog.
Share This | Email this page to a friend
Posted by David Dean on January 19th, 2009 under Uncategorized | 2 Comments »Type Traits
One of the newest features we’ve implemented in C++Builder 2009 seems to have been overlooked. I’ve mentioned it in the forums a few times, but it seems that this is surprising news to many folks.
Type trait functions are intrinsic functions that accept a type at compile time and deliver a compile
time constant expression as a result, typically of type bool. Type trait functions accept only named
types, not arbitrary expressions.
List of type functions supported in C++Builder 2009:
bool __is_lvalue_expr(typename T)
bool __is_rvalue_expr(typename T)
bool __is_complete_type(typename T)
bool __is_void(typename T)
bool __is_integral(typename T)
bool __is_floating_point(typename T)
bool __is_array(typename T)
bool __is_enum(typename T)
bool __is_union(typename T)
bool __is_class(typename T)
bool __is_function(typename T)
bool __is_reference(typename T)
bool __is_lvalue_reference(typename T)
bool __is_rvalue_reference(typename T)
bool __is_arithmetic(typename T)
bool __is_fundamental(typename T)
bool __is_object(typename T)
bool __is_scalar(typename T)
bool __is_compound(typename T)
bool __is_pointer(typename T)
bool __is_member_object_pointer(typename T)
bool __is_member_function_pointer(typename T)
bool __is_member_pointer(typename T)
bool __is_const (typename T)
bool __is_volatile(typename T)
bool __is_empty(typename T)
bool __is_polymorphic(typename T)
bool __is_abstract(typename T)
bool __is_trivial(typename T)
bool __is_standard_layout(typename T)
bool __is_pod(typename T)
bool __has_trivial_default_constructor(typename T)
bool __has_trivial_copy_constructor(typename T)
bool __has_trivial_assign(typename T)
bool __has_trivial_destructor(typename T)
bool __has_nothrow_default_constructor(typename T)
bool __has_nothrow_copy_constructor(typename T)
bool __has_nothrow_assign(typename T)
bool __has_virtual_destructor(typename T)
bool __is_signed(typename T)
bool __is_unsigned(typename T)
unsigned int __array_rank(typename T)
unsigned int __array_extent(typename T, unsigned int I)
bool __is_same(typename T, typename U)
bool __is_base_of(typename Base, typename Derived)
bool __is_convertible(typename From, typename To)
These are expected to eventually be part of the C++0x standard library.
Share This | Email this page to a friend
Posted by David Dean on January 19th, 2009 under C++0x, C++Builder 2009 | 2 Comments »Boost Conference
Alisdair and I will be attending the Boost conference next week. I hope to use the opportunity to evangelize for our compiler and also to show off some of the new C++0x features that we’ve been implementing for Tiburón. I also hope it will give me some time to finally post some of the things I’ve been promising to publish such as boost results for our compilers. Stay tuned next week and I’ll do my best to get you some fun content.
Share This | Email this page to a friend
Posted by David Dean on April 28th, 2008 under Boost, C++0x | 5 Comments »Anniversary
Chris Bensen beat me to it:
http://chrisbensen.blogspot.com/2007/11/codegear-aniversary.html
By a staggering coincidence yesterday marked my first year at this job. (Which means I had only been a Borland employee for a single day when CodeGear was announced.)
Share This | Email this page to a friend
Posted by David Dean on November 14th, 2007 under CodeGear | Comment now »Call for sysops
Why is CodeGear looking for Quality Central sysops?
As of 10/10/07 17:24 PDT, These are the number of reports in Quality Central with a status of "Reported":
| Delphi | Delphi.Net | C++ | C# |
| 4008 | 614 | 157 | 107 |
according to the QC stats here:
http://qc.codegear.com/stats/
82 bug reports have come in in the last week.
Assuming we could tackle reports twice as fast as they are coming in, It would take us almost a year to handle the backlog. We don’t want to wait that long. If you want to help CodeGear, you can become a QC sysop.
What does a QC sysop do?
You can find out here:
http://dn.codegear.com/article/33867
If this sounds like something you want to do, please drop either myself or Chris Pattinson an email to request to become a sysop. Please indicate the area where you think you would be best suited and why you would make a good sysop.
Share This | Email this page to a friend
Posted by David Dean on October 11th, 2007 under Quality Central | 3 Comments »

RSS Feed
