Thanks for putting this all together, Daniel!

My opinion is the same as yours: option 2 and macro A.

One other thing we need to do is to standardize and document when and where
you need to use the gem5 namespace. For instance, do we need to update
*all* headers to be in the gem5 namespace? If not, when is an object in the
gem5 namespace and when it is not? What about `using namespace gem5`?
Can/must all .cc files include this?

Since this is a relatively big change to the coding standards which could
cause significant frustration to our users, we should be sure to document
and standardize *before* we make any code changes.

Cheers,
Jason

On Wed, Apr 14, 2021 at 6:48 AM Daniel Carvalho via gem5-dev <
gem5-dev@gem5.org> wrote:

> Hello, devs,
>
>
> We currently have a recurring issue, which is the lack of a gem5 namespace.
> This generates collision with other libraries and user code.
>
>
> A Jira ticket has been created to point out the issue last year:
>
> https://gem5.atlassian.net/jira/software/c/projects/GEM5/issues/GEM5-730
>
>
> And this topic has been brought up a few times:
>
> https://www.mail-archive.com/gem5-dev@gem5.org/msg37770.html
>
> https://gem5-review.googlesource.com/c/public/gem5/+/40878
>
> https://www.mail-archive.com/gem5-dev@gem5.org/msg36453.html
>
>
> Finally, there were already patches that were consequences of lack of a
> gem5
> namespace:
>
> https://gem5-review.googlesource.com/c/public/gem5/+/32175
>
> https://gem5-review.googlesource.com/c/public/gem5/+/40878
>
>
> A similar issue exists for macros, and an existing proposal to solve it
> already
> exists, which is to add a "GEM5_" prefix. It follows the coding style,
> which
> dictates that "preprocessor symbols (constants and macros) should be all
> caps with underscores":
>
> https://gem5.atlassian.net/jira/software/c/projects/GEM5/issues/GEM5-912
>
>
> It does not seem to be controversial to add this namespace; however, there
> is
> still one blocker to greenlight its creation: what will be its name. There
> are
> no explicit rules regarding namespace naming; however, they are typically
> declared starting with an uppercase letter followed by lowercase letters.
> So,
> theoretically, gem5's namespace should be "Gem5". This, however, conflicts
> with gem5's identity: "“gem5” should always have a lowercase “g”"
> (see http://www.gem5.org/getting_started/).
>
>
> We should decide as a community what is the best approach to take, so I'll
> list the options and will request you to cast your votes. If you would like
> to add remarks to the discussion, feel free to do so.
>
>
> NAMESPACE:
>
> *1 - namespace Gem5 {}*
>
> *2 - namespace gem5 {}*
>
>
> MACROS:
>
> *A - GEM5_MACRO_NAME*
>
> *B - gem5_MACRO_NAME*
>
>
> Personally, I think that identity precedes coding style, so **option 2**
> should
> be taken. Yet, in a slightly inconsistent manner, I would vote for macro
> **option A**. My argument being that it would be more convenient to type
> it
> with all caps, and that it would be implied from the identity that it
> refers to
> instances of the identity containing lowercase letters, which is not the
> case
> of "GEM5_".
>
> Best,
> Daniel
> _______________________________________________
> gem5-dev mailing list -- gem5-dev@gem5.org
> To unsubscribe send an email to gem5-dev-le...@gem5.org
> %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to