Skip to content

Instantly share code, notes, and snippets.

Last active Sep 28, 2020
What would you like to do?
Beerconf 2020 September

Major topics discussed during BeerConf September 2020 edition

  1. Walter implemented __totype(string) (dlang/dmd#11797) Points raised in objection to the feature are:
  • It can't work in CTFE, as they are not polymorphic
  • It's inferior to the capabilities type functions

(General conversation about science fiction books, genres, and authors)

  1. All rejoice for -preview=in!
  • Mathias raised a problem where -preview=in is not compatible with non-preview=in code, and so there needs to be a way to propagate the compiler flag in dub (see topic 11).
  1. Type functions -- how do they work. What are the limitations
  • Cannot generate types inside type functions
  • Do not want to do any code generation while executing a type function
  1. SIMD and alignment - I wasn't paying too much attention, but I think this was about how the compiler doesn't align SIMD static arrays automatically.

  2. Issues with compilation times:

  • importing std.uni, and using -unittest adds 500ms of compile time. UNACCEPTABLE!!!!
  • A recent change in the compiler magically fixed an issue that Atila was doing. Stefan says -- it changed the order of default template parameter analysis.
  1. Type functions are like cutting sentences out of paper -- they cannot change shape

  2. Issues with compilation of templates:

  • First, we need a compiler situation that will actually work, link and run as expected
  • Then we need to figure out what we can do to improve the performance
  1. (spoken) Languages which pronounce H are barbaric. (Yay French!)

  2. Tooling is great in Go, why not in D?

  • Go provides access to the compiler internals
  • But IDEs and other things will come when someone feels the need to make it.
  1. Beer thread! Where are the worst beers created? We have some contenders:
  • Ethan: Finland
  • Steve: America has some pretty bad beer
  • Mathias: South Korean beers are only mixers
  1. Is there a way to propagate compiler command line options to subprojects (DUB) ?

  2. Reification, what's that all about?

adr's addition to reification

 // only gonna work on type lists though!
template NoDuplicates(T...) {
        import std.meta;
        string getIndexesCode() {
                size_t[string] things;
                foreach(idx, t; T)
                        things[t.mangleof] = idx;
                string code;
                foreach(k, v; things) {
                        if(code.length) code ~= ", ";
                        code ~= "T[" ~ cast(char) (v + '0') ~ "]";
                return "AliasSeq!(" ~ code ~ ")";
        alias NoDuplicates = mixin(getIndexesCode());

static assert(NoDuplicates!(int, int, string).length == 2);
static assert(is(NoDuplicates!(int, int, string)[0] == int));
static assert(is(NoDuplicates!(int, int, string)[1] == string));
  1. What is everyone's view of the things that you hate about D, and the things that you like about D?
  • Why do people who are contributors leave the community?
  • What can people to to determine who is an appropriate reviewer for a PR?
  1. D used in drag racing -- IT'S HAPPENING. Very interesting stuff from Dylan Graham.
  1. Reification Part II -

  2. Moving modules/packages in Phobos to separate projects in Dub.

  3. Phobos unittests, Range unittests tend to be shallow.

  4. Range algorithm API consistency regarding inputs are accepted.

  5. i/o discussion: What's the best way to get data from i/o

  • buffering is necessary for performance
  • No reason to keep using buffers unless you want to transform data.
Copy link

andralex commented Sep 27, 2020

Missed @adr's stuff, pretty cool!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment