IMO C++ is the pragmatic choice here. 

- Anyone with a C compiler is virtually guaranteed to have a C++ compiler these 
days, so no extra toolchain burden on users.
- Our configure and build system already has all the infrastructure in place 
for C++ builds.
- We already do half-C-half-C++ in the codebase, so users would actually never 
notice.
- Modern C++ truly isn’t the unwieldy beast that C++03 was. Algorithms, the 
container library, and all the additional type safety no longer requires the 
insane template verbosity that it once did.
- C++ has by far the widest user-base and adoption among all choices given, and 
given the heavy buy-in from corporate America we are guaranteed that C++ will 
see continued support for years (if not decades) to come.

Best regards,

Jacob Faibussowitsch
(Jacob Fai - booss - oh - vitch)

> On Jul 26, 2022, at 08:30, Matthew Knepley <knep...@gmail.com> wrote:
> 
> On Mon, Jul 25, 2022 at 4:34 PM Barry Smith <bsm...@petsc.dev> wrote:
> 
>    A  major problem with writing a completely new version of a large code 
> base is that one has to start with nothing and slowly build up to everything, 
> which can take years. Years in which you need to continue to maintain the old 
> version, people want to continue to add functionality to the old version, and 
> people want to continue to use the old version because the new version 
> doesn't have "the functionality the user needs" ready yet.
> 
>   Is there an approach where we can have a new PETSc API/language/paradigm 
> but start with a very thin layer on the current API so it just works from day 
> one?
>       • to this would seem to require if PETSc future is not in C, there has 
> to be a very, very easy way and low error-prone way to wrap PETSc current to 
> be called from the new language. For example, how petsc4py wraps seems too 
> manual and too error-prone. C++ can easily and low-error prone call C, any 
> other viable candidates?
> This looked like the most promising thing about Zig. We could develop the new 
> modules alongside the existing C, and throw them away
> if we decide it is not worth it.
> 
>    Matt
> 
> -- 
> What most experimenters take for granted before they begin their experiments 
> is infinitely more interesting than any results to which their experiments 
> lead.
> -- Norbert Wiener
> 
> https://www.cse.buffalo.edu/~knepley/

Reply via email to