Skip to content

Instantly share code, notes, and snippets.

@schveiguy
Last active Sep 28, 2020
Embed
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? https://gist.github.com/andralex/6212ebf2b38c59c96cf66d0009336318

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.
@andralex
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