Is there any plan for a ROS2 distro compatible with C++20? - c++20

ROS2 humble distro currently supports C++17. Can it support C++20 modules?
Is there any prospect for a future ROS2 distro to support, be compatible with C++20, or leverage C++20 features?
Is there any plan for a future ROS2 distro that compiles with C++20
One that utilises C++20 features (especially C++20 modules)
How far are we from supporting C++20 modules? Will "modules" ever be supported, or are they in conflict with how ROS2 is designed?

Today, you can build your own packages with C++20, and link them to ROS 2 packages build with C++17 just fine.
Be aware though: not all C++20 features are supported on all compilers. Of note: as of writing, C++20 Modules are only partially supported on GCC, Clang, and MSVC, so I would guess a full migration of the ROS core to C++20 modules is a long way off. See https://en.cppreference.com/w/cpp/compiler_support for a more detailed summary.
As far as ROS2 design, plans, and direction, you should probably post on https://discourse.ros.org/

Related

Using sonarlint-cli for C++ analysis

I hoped to use sonarlint-cli (2.0) for pre-commit analysis of C++ with a remote SonarQube server (5.6.1), but when updating the binding and downloading analysis plugins, it tells me the cxx plugin (among others) is not compatible:
DEBUG: Plugin cxx is not compatible with SonarLint. Skip it.
This is the community C++ plugin (0.9.6).
I'm wondering about the compatibility rules for plugins with SonarLint, and about alternative pre-commit approaches.
According to SonarLint web site, the connected mode "will make SonarLint use the analyzers, quality profiles and settings defined on your SonarQube server." However, that is not entirely true.
SonarLint does not support the non-sonarqube analyzers. Thus, it does not support PMD, checkstyle, FindBugs, C++ community plugin, and others. So, even if these analyzers are defined on your SonarQube server and quality profiles, they will not be used.
You may ask why. In a google group discussion, it's said that SonarLint can only work perfectly and superfast if these other analyzers do not run.
I personally think that statement is detrimental to the developers of these other tools. The decision not to support third-party plugins is also problematic to organizations (like mine) that have invested a lot of time in polyglot static code analysis. Remember, for 5+ years many people have created custom checks and custom rules using checkstyle and PMD, for example. Back then, sonar (ergo sonarqube) did not offer an API for Java custom checks.
I'm worried that SonarQube might eventually drop support for all these external plugins altogether.

For Tcl, is there an equivalent to perl's CPAN?

Given that the Tcl Wiki had a page titled
"Why isn't there a Comprehensive Tcl Archive Network like Perl's CPAN?", it seems the short answer to this is "no". Is there however someplace with an approximation - web sites, or FTP sites, with tarballs of multiple packages, ideally with older versions?
I'm an infrequent user of Tcl, and am undertaking a new x86_64 install of ActiveTcl, attempting to reproduce the package set of an i386 installation on older machines.
Using ActiveState's teacup package installer, it seems I'm able to find and install equivalents to two-thirds of the packages that were installed under the old tree. For the remaining set of packages, searching finds package-specific webpages across a variety of sites, some with only their latest version of source available.
As I'd like to avoid up-reving dependancies that some of these latest-version Tcl packages demand, I'd like to be able to install older versions of the packages.
Is there a repository that maintains broad and deep sets of Tcl add-on packages?
ActiveState's “teapot” repository is pretty good (especially for 32-bit builds) since they include nearly everything that is a sane (and reusable outside that one application) package with a sane build process. I use their stuff (and sometimes submit bug reports where the packaging has gone wrong).
There's also tcllib (as #glennjackman mentions in comments). The large majority (maybe even all) of that is available from the ActiveState repo; that which isn't is either because it isn't yet finished or because it's seriously broken in some other way. The main downside of tcllib is that it only has Tcl (and Tk, for tklib) as a binary dependency, which restricts what can be in there quite a bit; there's no database drivers in there, for example.
For binary packages, where you're not getting them via the teapot, the best place to start looking is Joe English's Gutter (Great Unified Tcl/Tk Extension Repository). It doesn't include builds but it does let you find things and then build them yourself. Most packages will also have a page (at least) on the Tcler's Wiki; that tends to be a reasonable place to look for usage samples and collected tips. (Also remember you can ask here if you've got a question specific enough.)
If you're working with tclkits, the space of libraries is a little different (as you're looking for a .kit-ted version). However I don't know that area so well.

What is the difference between source and binary distributions of mysql

Please let me know how to differentiate source and binary distributions of Mysql?
From internet, I came to know that one is compiled and other is not compiled version.
Not compiled version means, which software or language it uses to compile?
Compiled version means, how it works for different operating systems? is MySql developed in platform independent language?
Sorry for asking this type of question, but I need to get clarified on my doubts.
Thanks in advance.
http://en.wikipedia.org/wiki/MySQL
MySQL is written in C/C++ which are reasonably platform independent - it means a version of MySQL is available for different platforms (versions of operating systems). Binaries are build for different platforms, and you need to download binary version for the platform you have. Windows binary would not work on BSD Unix, etc.
You can see available platforms here: http://dev.mysql.com/downloads/mysql/
Likely with some skills you can build MySQL from sources on many other platforms. Not sure what exactly you want.
If you download source version, you need to have build tools. For example on Windows, you need to install C and C++ compilers and other tools as necessary.
Or you can just download both binaries and sources, and read source for learning experience.
Wikipedia article above has links explaining many more terms, to clear many more of your doubts. :-)
Edit:
C and C++ are considered "platform-independent": they are part of Gnu compiler collection : which provides compilers for many languages ("The GNU Compiler Collection includes front ends for C, C++, Objective-C, Fortran, Java, Ada, and Go, as well as libraries for these languages") for many platforms/operating systems. And of course they power all distributions of Linux. See http://en.wikipedia.org/wiki/GNU_Compiler_Collection and http://en.wikipedia.org/wiki/GNU_Project

OpenACC in Visual C++

I want to parallelize my codes with OpenACC directives. It's said that it is a crossplatform API. The developer firms are giving no information about OpenACC in VisualStudio. Is there a way to do that?
Currently there are only OpenACC implementations available from PGI, CAPS, and Cray. I think PGI mentioned a beta-level plug-in for Visual Studio in a 2010 newsletter but I don't think they have any official support. CAPS only mentions Linux support on their website. Cray is only available to users of Cray clusters, and I don't believe they run Windows.
So I think currently you need a Linux machine or possibly a Mac. I would expect this to change in the future but I'm not aware of specific plans.
CAPS Entreprise has now also a Windows version available: http://www.caps-entreprise.com/products/caps-compilers/

Best portable development platform for small personal project

I'm looking for a development platform (language and set of libraries) that will allow me to develop a personal project. (In case anyone is curious, I'm looking at making a music library manager, similar to iTunes, that can work on multiple platforms and sync with Android devices).
I want the language to have the following characteristics:
Essential
The program must run flawlessly, with no (or very little) code changes on Mac, Linux, and Windows. That means, notably, that I need to have a cross-platform GUI framework, a consistent API for accessing files and directories, and a consistent interface for talking to USB storage devices
Important
A language that is easy to use, powerful, and expressive. Big standard libraries with a lot of built-in functionality. (I'd probably use C#/.NET but the portability isn't great)
Nice to have
Good tool support (on Linux if possible, but I'll do my development on Windows if needs be)
Not Java. (I have used it and just don't like it - I'm not interested in getting into a language war here).
Please help me choose a language!
Python
Cross platform GUI: more than one option, I'd use WxPython, but Qt bindings are also available (comparison between wxWidgets and Qt).
File System API: this gets into the os package, but there are also convenience methods for just dealing with I/O.
USB I/O: I confess to not having any knowledge here, but suspect if you're talking storage that Python will be able to read and write using its IO package.
Libraries, Ease of Use, etc..: there's a lot built in, but also a huge number of add-ons (called "packages"). Some of the most notable are SciPy and NumPy, used for scientific and numerical analysis.
Tooling: there are a number of IDEs out there, I use PyDev (but it's Eclipse based so you probably won't like it if you don't like Java).
Finally, Python is supported on Android via its scripting environment.
For cross platform GUI, you can explore QT. The back-end can be on c.
Have you explored anything so far?
Qt quick ?