Nothing gets software devs as engaged as when discussing naming conventions
:).

I vote for "gem5" (lowercase) namespace, with all caps MACROS, but my sole
reason for this is I've grown to flinch whenever I see "Gem5", which I
admit isn't the best argument.

I echo Daniel's comment that I care more about having a rule and moving
past this than what that rule should be.

--
Dr. Bobby R. Bruce
Room 2235,
Kemper Hall, UC Davis
Davis,
CA, 95616

web: https://www.bobbybruce.net


On Sun, Apr 18, 2021 at 3:44 PM Daniel Carvalho via gem5-dev <
gem5-dev@gem5.org> wrote:

> Overall, there are way more uses of "gem5" than "Gem5" in the codebase,
> and most of the instances that break the identity rule could be easily
> fixed; however, there are cases that generate inconvenience: classes
> starting with lowercase, and situations where gem5 is in the middle of the
> var name (like "haveGem5Extension") make the code harder to
> read/understand. In this sense, the uppercase version generates better
> code.
>
>
> I still favor namespace gem5 - it'd be the "external external" API, i.e.
> we probably wouldn't be using it within src/ that much, and it would be
> used by other simulators and within our SystemC bridge (more on that later)
> - however, since we already have some exceptions, it wouldn't be the end
> of the world having it start with a capital letter.
>
>
> In the end, I personally do not care about which approach is taken, but
> the decision taken must be taken as a community. Therefore, it would be
> nice if we could have participation from other contributors to make the
> final decision less susceptible to changes/complaints in the future.
>
>
> Regarding when to use it:
> IMHO (and not thoroughly thought out), all .cc and .hh and objects within
> src/ should be subject to the namespace. Objects declared there are
> declared and maintained by gem5. Because of that there would probably be
> very few instances of namespace resolution within src/, so we should keep
> avoiding "using namespace" and being verbose about it. Finally, we also
> probably want to encourage users to define their objects inside the gem5
> namespace to make it less unlikely that they will give up on uploading
> their contributions due to the different styles, and the laziness to adapt
> code. This means that disturbance in user code would be minimal: they would
> simply add "namespace (G|g)em5 {" in the beginning and "} // namespace
> (G|g)em5" at the end, instead of multiple "(G)|gem5::" instances.
>
>
> Regards,
>
> Daniel
> For the record, if the namespaces you found using snake_case start with
> sc_, those are for systemc and are mandated by that standard. The one
> exception, sc_gem5, is one I made up which is closely associated with the
> other systemc namespaces and is named similarly to them for consistency.
>
> Gabe
>
> On Thu, Apr 15, 2021 at 1:51 AM Giacomo Travaglini <
> giacomo.travagl...@arm.com> wrote:
>
> My vote goes to 1 and A as well
>
> My sole argument is consistency; in general I'd rather start a namespace
> with a lowercase. So that when we have something
> like a scope resolution we know we are dealing with a namespace and not a
> class. But that's off-topic.
>
> Namespace names are anyway not covered by our coding style, so it's
> probably worth adding an entry.
>
> https://www.gem5.org/documentation/general_docs/development/coding_style/
>
> From a quick grep I can see most of our namespaces follow the PascalCase
> type, though there are some namespaces using snake_case convention.
>
> Giacomo
>
> > -----Original Message-----
> > From: Gabe Black via gem5-dev <gem5-dev@gem5.org>
> > Sent: 15 April 2021 09:03
> > To: gem5 Developer List <gem5-dev@gem5.org>
> > Cc: Gabe Black <gabe.bl...@gmail.com>
> > Subject: [gem5-dev] Re: gem5 namespace
> >
> > My vote is for 1 and A.
> >
> > We have style rules for a reason, and that is because not following them
> > causes technical problems like name collisions, and makes it less obvious
> > when reading code what things are and what they're doing. It's a bit
> > hypocritical to say that we should follow style rules and completely
> ignore
> > the aesthetic rule when capitalizing GEM5_, but then say that the
> aesthetic
> > rule should win when dealing with the namespace.
> >
> > This is further inconsistent with the Gem5Internal namespace, the Gem5
> > class in SCons, the Gem5Op instruction format used for ARM, and the
> > Gem5Imm constant used for ARM semihosting. It would also cause a
> collision
> > with any variable called gem5, a completely legal and reasonable name to
> use,
> > *especially* in code outside of gem5 which might be using it to refer to
> > something related to gem5 which it is interacting with.
> >
> > There are no other instances where we let superficial aesthetic
> conventions
> > like this overrule technical considerations. We don't add _tm to the end
> of
> > trademarked names, we don't call AtomicSimpleCPU the atomic simple CPU
> > since that's not a valid class name, and a hundred other examples of
> where
> > prose takes a back seat because this is not prose, this is a conceptual
> machine
> > people happen to be able to read.
> >
> > Our website is the place for branding and identity and marketing, our
> code is
> > not.
> >
> > Gabe
> >
> > On Wed, Apr 14, 2021 at 7:28 AM Jason Lowe-Power via gem5-dev <gem5-
> > d...@gem5.org <mailto:gem5-dev@gem5.org> > wrote:
> >
> >
> > 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 <mailto: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/G
> > EM5-730
> >
> >
> > And this topic has been brought up a few times:
> >
> >
> > https://www.mail-archive.com/gem5-
> > d...@gem5.org/msg37770.html
> >
> > https://gem5-
> > review.googlesource.com/c/public/gem5/+/40878
> >
> > https://www.mail-archive.com/gem5-
> > d...@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/G
> > EM5-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 <mailto:gem5-
> > d...@gem5.org>
> > To unsubscribe send an email to gem5-dev-le...@gem5.org
> > <mailto:gem5-dev-le...@gem5.org>
> > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
> >
> > _______________________________________________
> > gem5-dev mailing list -- gem5-dev@gem5.org <mailto:gem5-
> > d...@gem5.org>
> > To unsubscribe send an email to gem5-dev-le...@gem5.org
> > <mailto:gem5-dev-le...@gem5.org>
> > %(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s
>
> IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium. Thank you.
>
> _______________________________________________
> 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