Feature #1469

Don't require migration constructors for all array objects at compile time

Added by Phil Miller about 1 year ago. Updated about 1 year ago.

Target version:
Start date:
Due date:
% Done:



Currently, every chare array element type is required to have a CkMigrateMessage* constructor that would be used during migration events (LB, FT). The code generator assumes such a definition is provided, and compilation or linking fails if it's missing. This is an extra hurdle for new users to clear, or extra boilerplate they just need to copy in and ignore until it becomes relevant.

We can move this requirement later, to when users actually want features that require migration support. Ideally, we would still detect the absence at compile time (possibly with the [migratable] attribute on the chare class), but run time is quite easy, and doesn't impose an API change on existing code.


#2 Updated by Phil Miller about 1 year ago

  • Target version changed from 6.8.0 to 6.9.0

BGQ XLC test failed. It will not accept the #include <type_traits> as currently configured, because GCC's libstdc++ implementation that it references has a feature guard, and XLC fails to compile other stuff in the standard library when I set the feature guard flag manually.

So, we could test for type_traits, and only have it work nicely when that's available.

#3 Updated by Phil Miller about 1 year ago

  • Target version changed from 6.9.0 to 6.8.0

BGQ XLC is happy enough with the fall-back option

BGQ GCC handles the new version cleanly

Manual updated to reflect reduced necessity of migration constructor

#4 Updated by Phil Miller about 1 year ago

  • Status changed from Implemented to Merged

Also available in: Atom PDF