<malthe>
like I just wanted to contribute a small improvement but it's taking days and days due to other failures which then lead to release rebasing etc.
<malthe>
didn't some ability to mark a test as flaky land recently?
montanonic has quit [Ping timeout: 245 seconds]
mvzink has joined #ponylang
mvzink has quit [Ping timeout: 250 seconds]
<SeanTAllen>
we are only marking as flakey, we don't do anything with that other than attempt to note what is flakey and might need to be fixed
<SeanTAllen>
There's open issues for a couple
<SeanTAllen>
That TCPThrottle failure is... interesting...
<SeanTAllen>
i wonder how on earth that could not complete in 10 seconds, at that point for what didn't complete
<SeanTAllen>
interesting, that was on Linux. I'd only seen OSX network test failures so far and would get them time to time locally as well.
mvzink has joined #ponylang
mvzink has quit [Ping timeout: 256 seconds]
jemc has joined #ponylang
mvzink has joined #ponylang
mvzink has quit [Ping timeout: 260 seconds]
Matthias247 has joined #ponylang
<SeanTAllen>
well, that failure gave me an idea for what the problem might be. a very different idea than what I previously had. testing it out.
mvzink has joined #ponylang
mvzink has quit [Ping timeout: 260 seconds]
mvzink has joined #ponylang
mvzink has quit [Ping timeout: 276 seconds]
<SeanTAllen>
merged a possible solution to master. i'd suggest rebasing to pick it up malthe
mvzink has joined #ponylang
<malthe>
SeanTAllen: I'm trying to write up an RFC-proposal for abstracting out character coding from strings. in a perfect world, would it be wrong to want to have "type String[A: Codec[U8] = UTF8] is Array[U8, A]" where this `A` is a value-type that works as a character abstraction - ?
mvzink has quit [Ping timeout: 256 seconds]
<malthe>
lots of places we have `(String | Array[U8])`; disregarding the matter of character encoding/decoding, is there a good reason to keep them as separate types?
<malthe>
the idea with "String[A: Codec[U8] = UTF8]" (whatever the syntax) is that we'll be able to use a primitive as `A` so that the compiler won't have to pointer dereference or what not.
<malthe>
it should perform as well as the current implementation where UTF-8 is more or less hard-coded.
<SeanTAllen>
I can't answer that wo more details
<SeanTAllen>
What would replace the current union?
jemc has quit [Ping timeout: 256 seconds]
mvzink has joined #ponylang
mvzink has quit [Ping timeout: 256 seconds]
<malthe>
SeanTAllen: in the case of `hash_fn` it would have to be an Array[U8] with no codec.
<malthe>
like String[Bytes] = Array[U8, Bytes] or something like that.
<malthe>
ideally, this should work in an "ergonomical" way.
<malthe>
what Swift does is to introduce wrapper views, e.g. CharacterView[UTF8](some_string); perhaps that's less complex and it allows String = Array[U8] without much more work.
<SeanTAllen>
Does the wrapper impact performance?
<malthe>
the compiler/llvm should be able to optimize away the implementation when it's used locally only (which is probably often times the case).
<malthe>
or perhaps it can "embed" the string?
<malthe>
that ought to work fine since the actual string data is anyway a pointer away.
jemc has joined #ponylang
<malthe>
we might have "fun characters[A: Codec = UTF8](): this->CharacterView[A]" as a convenience method.
mvzink has joined #ponylang
jemc has quit [Ping timeout: 244 seconds]
<malthe>
the downside is that you might forget about going through "characters" when dealing with your string. in the case where String is character-coding aware, you can't forget.
mvzink has quit [Ping timeout: 252 seconds]
mvzink has joined #ponylang
mvzink has quit [Ping timeout: 244 seconds]
graaff has quit [Quit: Leaving]
<SeanTAllen>
before anything could be adopted, it would need to be performance tested to see if there is unacceptable overhead
<SeanTAllen>
but first, the idea. then the testing.
mvzink has joined #ponylang
mvzink has quit [Ping timeout: 260 seconds]
<malthe>
SeanTAllen: both ideas seem to require value-dependent types, ideally with support for a default value such as UTF8 (which incidentally is a primitive).