19:53:17 | * | NimBot joined #nim |
19:58:37 | * | NimBot_ joined #nim |
20:02:09 | * | NimBot_ quit (Remote host closed the connection) |
20:02:27 | * | NimBot_ joined #nim |
20:03:01 | * | NimBot_ quit (Remote host closed the connection) |
20:03:21 | * | NimBot_ joined #nim |
20:03:31 | * | NimBot_ quit (Remote host closed the connection) |
20:05:09 | * | NimBot_ joined #nim |
20:12:46 | * | NimBot_ quit (Remote host closed the connection) |
20:13:23 | * | NimBot_ joined #nim |
20:22:26 | * | NimBot_ quit (Remote host closed the connection) |
20:22:44 | * | NimBot_ joined #nim |
20:23:56 | * | NimBot_ quit (Remote host closed the connection) |
20:25:09 | * | NimBot_ joined #nim |
20:26:31 | * | NimBot_ quit (Remote host closed the connection) |
20:29:34 | * | NimBot joined #nim |
20:30:44 | * | NimBot joined #nim |
20:36:55 | * | NimBot_ joined #nim |
20:46:56 | * | NimBot_ quit (Remote host closed the connection) |
20:47:15 | * | NimBot_ joined #nim |
20:47:35 | * | NimBot_ quit (Remote host closed the connection) |
20:47:52 | * | NimBot_ joined #nim |
20:48:09 | * | NimBot_ quit (Remote host closed the connection) |
20:48:25 | * | NimBot_ joined #nim |
20:48:44 | * | NimBot_ quit (Remote host closed the connection) |
20:49:00 | * | NimBot_ joined #nim |
20:50:46 | * | NimBot_ quit (Remote host closed the connection) |
20:52:35 | * | NimBot joined #nim |
20:59:27 | * | SebastianM joined #nim |
20:59:34 | * | SebastianM quit (Client Quit) |
21:01:07 | * | FromDiscord joined #nim |
21:01:17 | dom96 | Hello World from IRC |
21:01:31 | FromDiscord | <treeform> Hey dom96 |
21:01:37 | dom96 | We're back on Libera.chat :) |
21:01:45 | FromDiscord | <treeform> cool |
21:02:16 | dom96 | Our IRC logs are back now too and modernised: https://irclogs.nim-lang.org/ |
21:03:15 | FromDiscord | <treeform> Cool I can see them |
21:03:48 | dom96 | !eval echo("Test") |
21:03:50 | NimBot | Test |
21:03:58 | dom96 | okay, all still working fine. |
21:04:13 | FromDiscord | <ElegantBeef> !eval echo "No" |
21:04:15 | NimBot | No |
21:04:29 | dom96 | Now I can hopefully make some updates to NimBot tomorrow |
21:05:19 | FromDiscord | <dom96> @ElegantBeef were you expecting that to not work? 😛 |
21:06:00 | FromDiscord | <dom96> I think the biggest things we need from NimBot are: multi-channel log support and maybe nicer display of discord messages |
21:06:11 | FromDiscord | <ElegantBeef> In reply to @dom96 "<@!145405730571288577> were you expecting": Are you a cop? |
21:06:17 | FromDiscord | <dom96> I think I can probably detect FromDiscord and parse it |
21:06:31 | * | rockcavera quit (Remote host closed the connection) |
21:06:31 | FromDiscord | <ElegantBeef> While you're at it, probably should update the website to point there instead of freenode |
21:06:39 | FromDiscord | <dom96> yep |
21:06:45 | FromDiscord | <dom96> want to announce this change as well |
21:06:58 | FromDiscord | <dom96> maybe we can get some free "Nim is moving to Libera" PR 😛 |
21:07:59 | FromDiscord | <leorize> that won't happen \:P |
21:08:26 | * | leorize[m] left #nim (#nim) |
21:08:56 | FromDiscord | <ElegantBeef> If you want free PR, just announce that you're staying on freenode |
21:09:17 | FromDiscord | <dom96> that would be clickbait lol |
21:09:22 | FromDiscord | <dom96> also, I got access to |
21:09:23 | FromDiscord | <ElegantBeef> Not if you actually stayed |
21:09:26 | FromDiscord | <dom96> #nim-lang:matrix.org |
21:10:04 | FromDiscord | <leorize> btw join `#nim:envs.net` for the nim spaces |
21:10:14 | FromDiscord | <leorize> did you get the old room back? |
21:10:58 | FromDiscord | <dom96> yes |
21:12:34 | federico3 | dom96: "alas even Nim finally moved to Libera" PR? |
21:13:00 | FromDiscord | <leorize> @dom96\: there is a guide here for moving rooms\: https://coshacks.blogspot.com/2021/05/matrix-tips-they-dont-tell-you.html |
21:13:04 | FromDiscord | <leorize> look for "tombstone" |
21:16:56 | FromDiscord | <leorize> I find it weird that the #nim-lang room have both appservice-irc and gitter |
21:17:09 | * | leorize left #nim (WeeChat 3.1) |
21:20:31 | * | iortega quit (Remote host closed the connection) |
21:25:56 | * | neceve quit (Ping timeout: 268 seconds) |
21:28:20 | FromDiscord | <dom96> I think it would be cool to make #nim-lang:matrix.org the main channel |
21:28:44 | FromDiscord | <dom96> Since Gitter is already connected there |
21:29:01 | FromDiscord | <dom96> we can get rid of FromGitter and link it to Discord |
21:31:18 | FromDiscord | <dom96> I think I'll need to draw a bridging chart after all this is done lol |
21:32:16 | * | Epsilon quit (Remote host closed the connection) |
21:32:35 | * | Epsilon joined #nim |
21:32:47 | FromDiscord | <planetis> Thank you guys for working on this! |
21:33:15 | FromDiscord | <leorize> I think I can tombstone this one to that one, at the cost of history, ofc |
21:35:37 | FromDiscord | <leorize> so, you want the tombstone? |
21:35:46 | FromDiscord | <dom96> what to what? |
21:36:12 | FromDiscord | <leorize> here to #nim-lang\:matrix.org |
21:36:40 | FromDiscord | <dom96> #nim-main\:envs.net to #nim-lang\:matrix.org. Sure I guess. Is there really much point to doing it though? |
21:36:58 | FromDiscord | <leorize> so people are moved there automatically? |
21:38:01 | FromDiscord | <dom96> ok |
21:40:54 | FromDiscord | <leorize> let's see how well this work |
21:41:28 | FromDiscord | <dom96> Now I'm wondering about our Telegram channel |
21:41:34 | FromDiscord | <dom96> is it time to bridge it too? |
21:41:45 | FromDiscord | <dom96> I've been leaning to keeping it separate but maybe everyone disagrees |
21:42:16 | FromDiscord | <ElegantBeef> Seems like the sensible thing is to ask them 😛 |
21:42:27 | FromDiscord | <leorize> dom, can you turn off the gitter bridge? |
21:42:49 | FromDiscord | <ElegantBeef> Or at the very least have a bridged telegram channel, so they speak here if they want to |
21:43:02 | FromGitter | <BracketMaster> I'm doing some posix drudgery in nim and can't figure out how to create an instance of Timeval() |
21:43:03 | FromGitter | <BracketMaster> https://nim-lang.org/docs/posix.html#Timeval |
21:43:21 | FromGitter | <BracketMaster> ``Timeval(tv_sec : castdistinct clong (0), tv_usec : castclong (0))`` nim doesn't quite like that |
21:43:32 | FromDiscord | <dom96> leorize: the IRC one? |
21:43:57 | FromDiscord | <leorize> yea |
21:44:03 | FromGitter | <dom96:matrix.org> I'm a little confused by the setup here |
21:44:09 | FromGitter | <dom96:matrix.org> shouldn't we see BracketMaster's message show up twice? |
21:44:14 | FromDiscord | <leorize> if we move the bridge there then gitter will go through matrix |
21:44:42 | FromGitter | <BracketMaster> "go through matrix" gives me 2000s vibes |
21:44:43 | FromDiscord | <leorize> and matrix go to discord which goes to irc |
21:44:50 | FromDiscord | <leorize> you can see the loop |
21:44:54 | FromDiscord | <ElegantBeef> !eval import std/posix; let a = Timeval(tvsec: 0.Time, tvUsec: 0) |
21:44:56 | NimBot | <no output> |
21:45:02 | FromDiscord | <ElegantBeef> There you go bracket 😄 |
21:45:16 | FromGitter | <BracketMaster> lol, not gonna lie, that's kinda cool |
21:45:28 | FromGitter | <BracketMaster> !eval import print |
21:45:30 | NimBot | Compile failed: /usercode/in.nim(1, 8) Error: cannot open file: print |
21:46:54 | FromGitter | <BracketMaster> discard execShellCmd("whoami") |
21:47:03 | FromGitter | <BracketMaster> !discard execShellCmd("whoami") |
21:47:13 | FromDiscord | <ElegantBeef> You'll get it eventually |
21:47:17 | FromDiscord | <ElegantBeef> Plus that's an OS module |
21:48:26 | FromGitter | <dom96:matrix.org> leorize: I'm confused why we don't already have a loop |
21:48:53 | FromGitter | <dom96:matrix.org> oh because this channel isn't bridged to Discord right now |
21:48:53 | FromDiscord | <Ricky Spanish> anyone got experience with parse trees? im struggling to find a coherent way to generate back from a parse tree to source code since the parse tree contains nodes that contain tokens of all child nodes, so im not sure if the best way is to flag "parent" nodes to not output source tokens or if there are better ways to regenerate source from a parse-tree |
21:49:20 | FromGitter | <BracketMaster> I'm waiting for somebody to feed nim bot an infinite loop |
21:49:22 | FromGitter | <BracketMaster> lol |
21:49:43 | FromDiscord | <ElegantBeef> I'd wager it has a killswitch if an operation takes too long |
21:49:45 | FromDiscord | <leorize> that somebody is called Zevv and he stopped the playground for several months |
21:49:59 | FromDiscord | <ElegantBeef> Lol |
21:50:13 | FromDiscord | <dom96> kicked FromGitter |
21:50:28 | FromDiscord | <ElegantBeef> Do we still see bracket then? |
21:50:34 | FromDiscord | <dom96> Now I suppose I need to bridge #nim-lang:matrix.org to Discord |
21:50:50 | FromDiscord | <leorize> maybe the bridge will happen automatically on tombstone |
21:50:57 | FromDiscord | <dom96> okay |
21:50:58 | FromDiscord | <leorize> tombstone is kind of a "move here" event |
21:50:59 | FromDiscord | <dom96> let's try it |
21:51:04 | FromDiscord | <leorize> typically used for room upgrades |
21:51:10 | FromDiscord | <ElegantBeef> So many bridges this is worse than a river crossing |
21:51:18 | FromDiscord | <leorize> but in this case we are downgrading \:P (this room is v6 and the other is v1) |
21:51:38 | FromDiscord | <dom96> does that make any difference? 🙂 |
21:52:10 | FromDiscord | <leorize> some features need the newer version |
21:52:40 | FromDiscord | <leorize> but probably not the one we would use |
21:53:09 | FromDiscord | <leorize> time to move, so pack your bags everyone |
21:53:14 | FromDiscord | <ElegantBeef> No you! |
21:56:34 | FromDiscord | <leorize> ping @dom96 |
21:56:40 | FromDiscord | <leorize> !matrix help |
21:56:40 | FromDiscord | <matrix-appservice-discord-t2bot> No commands found |
21:56:43 | FromDiscord | <leorize> !matrix |
21:56:43 | FromDiscord | <matrix-appservice-discord-t2bot> No commands found |
21:56:49 | FromDiscord | <leorize> !matrix unbridge |
21:56:49 | FromDiscord | <matrix-appservice-discord-t2bot> ERROR: insufficient permissions to use this command! Try `!matrix help` to see all available commands |
21:56:54 | FromDiscord | <leorize> yea it has to be dom |
22:00:07 | FromDiscord | <dom96> !matrix unbridge |
22:00:09 | FromDiscord | <matrix-appservice-discord-t2bot> This channel has been unbridged |
22:00:14 | FromDiscord | <dom96> !matrix bridge |
22:00:14 | FromDiscord | <matrix-appservice-discord-t2bot> ERROR: unknown command. Try `!matrix help` to see all commands |
22:00:18 | FromDiscord | <dom96> (edit) "bridge" => "help" |
22:00:21 | FromDiscord | <dom96> lol |
22:00:24 | FromDiscord | <dom96> !matrix help |
22:00:27 | FromDiscord | <matrix-appservice-discord-t2bot> sent a long message, see https://paste.rs/za6 |
22:00:34 | FromDiscord | <dom96> guess I need to do it on the matrix side |
22:01:13 | FromDiscord | <matrix-appservice-discord-t2bot> @dom96:matrix.org on matrix would like to bridge this channel. Someone with permission to manage webhooks please reply with `!matrix approve` or `!matrix deny` in the next 5 minutes. |
22:01:19 | FromDiscord | <dom96> !matrix approve |
22:01:19 | FromDiscord | <matrix-appservice-discord-t2bot> Thanks for your response! The matrix bridge has been approved. |
22:01:23 | FromDiscord | <leorize> you gotta fix the ACL of this room btw |
22:01:36 | FromDiscord | <dom96> yay, it's working |
22:02:11 | FromDiscord | <leorize> this one is an old version and moderator have too many power |
22:02:28 | FromDiscord | <dom96 (Dominik Picheta)> and here is a Gitter message |
22:02:39 | FromDiscord | <dom96 (Dominik Picheta)> ping |
22:02:45 | FromDiscord | <dom96> oh, this time it was faster |
22:03:40 | FromDiscord | <leorize> image.png https://media.discordapp.net/attachments/371759389889003532/855568477192323092/image.png |
22:03:45 | FromDiscord | <leorize> ^ btw use that as room avatar |
22:03:49 | FromDiscord | <dom96> changed the ACLs |
22:03:52 | FromDiscord | <leorize> it's the one I used for the rest of the rooms |
22:04:22 | FromDiscord | <dom96> done |
22:05:16 | FromDiscord | <dom96> hm, this room doesn't show up in search |
22:05:21 | FromDiscord | <dom96> any ideas why? |
22:05:45 | FromDiscord | <leorize> not published, that's why |
22:05:50 | FromDiscord | <leorize> the spaces should show up though |
22:05:56 | FromDiscord | <leorize> that's the more important one |
22:06:30 | FromDiscord | <dom96> ahh, should be published now |
22:07:08 | * | fputs quit (Quit: WeeChat 3.1) |
22:07:27 | FromDiscord | <leorize> we need to make unique icons for the other rooms |
22:07:48 | FromDiscord | <dom96> yep, who's the best artist we've got? 🙂 |
22:08:15 | FromDiscord | <dom96> wow, typing status is synced Discord-\>Matrix |
22:08:18 | FromDiscord | <leorize> #gamedev folkes should be able to help |
22:08:38 | FromDiscord | <leorize> yea, only one way though |
22:10:40 | dom96 | So now the longest chain is: Gitter->Matrix->Discord->IRC :D |
22:13:26 | FromDiscord | <deech> How do I convert a `string` to a `cstring`? `$` doesn't seem to work. Right now I'm allocating and naively copying character by character. |
22:13:48 | FromDiscord | <dom96> cstring is a `ptr char` |
22:13:55 | FromDiscord | <dom96> so you can either `addr str[0]` |
22:14:09 | FromDiscord | <dom96> (your `str` might be deallocated by gc) |
22:14:21 | FromDiscord | <dom96> or you `alloc` memory and copy the string there |
22:14:25 | FromDiscord | <planetis> Just use cstring(x) |
22:14:26 | FromDiscord | <leorize> what kind of conversion are you looking for? |
22:15:32 | FromDiscord | <deech> Just copy the contents of a string to a cstring. |
22:15:38 | FromDiscord | <deech> Not convert, sorry. |
22:15:55 | FromDiscord | <Varriount> Hm. What is the difference between a 'var' return type, and a 'lent' return type? |
22:16:22 | FromDiscord | <Hi02Hi> var is mutable, lent isnt |
22:16:48 | FromDiscord | <Hi02Hi> surely you know that |
22:17:16 | FromDiscord | <leorize> @deech\: like you got an external buffer and you want to copy the data over? |
22:17:24 | FromDiscord | <deech> Yep |
22:17:27 | FromDiscord | <leorize> then yea, loop and copy works, or you can use copyMem |
22:17:57 | FromDiscord | <dom96> @Hi02Hi `lent` is a pretty new addition to the language |
22:18:22 | FromDiscord | <dom96> and I think it has a deeper meaning than "immutable" |
22:18:32 | FromDiscord | <dom96> (but I also have no idea what it means) |
22:19:04 | FromDiscord | <deech> You can just copyMem a `string` into a `cstring` ? I thought they had different representations. |
22:19:31 | FromDiscord | <Varriount> @Hi02Hi Not `var x = y` vs `let x = y`, but `proc foo(): var T` vs `proc foo(): lent T` |
22:22:18 | FromDiscord | <Zachary Carter> In reply to @deech "You can just copyMem": I don't think you can |
22:22:44 | FromDiscord | <Zachary Carter> they do have different representations |
22:22:57 | FromDiscord | <Zachary Carter> but there is a zero-cost copy |
22:23:07 | FromDiscord | <Zachary Carter> if you just do string.cstring |
22:23:12 | FromDiscord | <Zachary Carter> or whatever |
22:23:23 | FromDiscord | <Zachary Carter> or zero-copy conversion I should say |
22:24:22 | FromDiscord | <dom96> pretty sure that is equivalent to `addr str[0]` |
22:24:41 | FromDiscord | <Varriount> @deech @Zachary Carter You would `moveMem(addr nimString[0], addr cstr[0], sizeof(char)len(cstr)`. But an easier way to go about that would probably be to just use a `for` loop. |
22:25:04 | FromDiscord | <dom96> string is basically: tuple[len: int, data: cstring] |
22:25:08 | FromDiscord | <Zachary Carter> copyMem / moveMem loks easier than a for loop to me |
22:25:15 | FromDiscord | <Zachary Carter> (edit) "loks" => "looks" |
22:25:35 | FromDiscord | <leorize> @deech\: `copyMem(cstring(str), addr target, length)` |
22:25:37 | FromDiscord | <leorize> copyMem is unsafe though |
22:25:44 | FromDiscord | <deech> Don't we need to also add a null byte at the end? |
22:25:55 | FromDiscord | <Zachary Carter> I think it's already done for you |
22:26:00 | FromDiscord | <Varriount> Lets check. |
22:26:09 | FromDiscord | <leorize> just `+1` to the length \:P |
22:26:10 | FromDiscord | <Zachary Carter> who needs safety really |
22:27:33 | FromDiscord | <shadow.> what's the best way to use a nim lsp on neovim? i saw the nim.nvim plugin but i'm worried that'll conflict with youcompleteme so i was wondering if there's a way to do it through youcompleteme directly |
22:28:07 | FromDiscord | <Varriount> @deech @Zachary Carter Nope. https://play.nim-lang.org/#ix=3qoa |
22:28:27 | FromDiscord | <dom96> one of these days I will write a program that analyses code for unsafe calls and gives the source code a score |
22:29:49 | FromDiscord | <leorize> there's something called lgtm |
22:29:53 | FromDiscord | <leorize> except that it doesn't support nim |
22:30:47 | FromDiscord | <Varriount> Hm, based on https://nim-lang.github.io/Nim/manual_experimental.html#view-types and https://nim-lang.org/docs/manual.html#procedures-var-return-type |
22:31:16 | FromDiscord | <Varriount> it doesn't seem like `lent` is all that different from `var`, at least from a conceptual point of view. |
22:31:18 | FromDiscord | <Zachary Carter> In reply to @dom96 "one of these days": pretty sure tools like this already exist |
22:31:21 | FromDiscord | <Zachary Carter> for C anyway |
22:31:23 | FromDiscord | <Zachary Carter> and C++ |
22:31:30 | FromDiscord | <dom96> @Zachary Carter I'm sure they do |
22:31:39 | FromDiscord | <Varriount> Intel has a pretty good one. |
22:31:44 | FromDiscord | <dom96> I was inspired by the Rust tool that does the same |
22:31:54 | FromDiscord | <dom96> Rust does make this kind of analysis trivial |
22:32:43 | FromDiscord | <Zachary Carter> I think such tools are somewhat pedantic in a lot of circumstances |
22:32:50 | FromDiscord | <Zachary Carter> in others they make a lot of sense |
22:33:20 | FromDiscord | <Zachary Carter> sorry - my game is going to be full of unsafe code, because I need to do unsafe things |
22:33:51 | FromDiscord | <Zachary Carter> such a tool for me is totally useless |
22:34:06 | FromDiscord | <Zachary Carter> but if I was writing space shuttle software |
22:34:09 | FromDiscord | <Zachary Carter> I certainly would care much more |
22:34:26 | FromDiscord | <exelotl> In reply to @Varriount "it doesn't seem like": I once heard that `lent` isn't guaranteed to always use a hidden pointer in the future |
22:34:46 | FromDiscord | <dom96> It's kind of like static typing, some don't care |
22:34:50 | FromDiscord | <dom96> which is fine |
22:35:00 | FromDiscord | <Zachary Carter> oh static typing is always useful though |
22:35:02 | FromDiscord | <Zachary Carter> it's never not a good thing |
22:35:04 | FromDiscord | <dom96> you don't need to write space shuttle software to care about using libraries that minimise unsafe code |
22:35:16 | FromDiscord | <dom96> how is unsafe code different? |
22:35:17 | FromDiscord | <Zachary Carter> again it depends on the situation |
22:35:26 | FromDiscord | <dom96> it's always best to avoid it |
22:35:27 | FromDiscord | <Zachary Carter> if you're writing game code, you probably don't care if the libraries you depend on are safe or not |
22:35:32 | FromDiscord | <Zachary Carter> I disagree |
22:36:00 | FromDiscord | <Zachary Carter> you potentially sacrifice performance and time for what gain if your program is simply running a simulation? |
22:36:36 | FromDiscord | <Zachary Carter> it's not like games are critical pieces of software that will cost human lives or lots of money if they fail |
22:36:42 | FromDiscord | <Zachary Carter> they'll get a neckbeard angry |
22:37:24 | FromDiscord | <Zachary Carter> I think's Rust's focus on safety and its community's zealous pursuit of it is a bad thing |
22:37:49 | FromDiscord | <Zachary Carter> library maintainers are shamed into making sure their libraries meet some asinine safety standards |
22:39:19 | FromDiscord | <Varriount> Araq: How are `lent` and `var` types conceptually different? From what I can tell, a `lent` type is the same as a `var` type, but with additional capabilities. |
22:39:40 | FromDiscord | <Zachary Carter> I think you can ping him on discord |
22:39:44 | FromDiscord | <dom96> okay, let me soften what I said a bit: it's always best to at least think about an abstraction that is safe and performant |
22:39:46 | FromDiscord | <Zachary Carter> unless he's disabled them |
22:40:10 | FromDiscord | <Varriount> @Araq / Araq: How are lent and var types conceptually different? From what I can tell, a lent type is the same as a var type, but with additional capabilities. |
22:40:46 | FromDiscord | <dom96> If you have a hot code path that you want to optimise with unsafe code then go for it, but don't just write unsafe code because you can everywhere, most code paths aren't hot 🙂 |
22:41:00 | FromDiscord | <konsumlamm> fwiw, Araq recently did some spec changes for view types: https://github.com/nim-lang/Nim/pull/18226 |
22:41:23 | FromDiscord | <Zachary Carter> I think pretty much anything that doesn't rely on the stdlib / GC is going to be full of unsafe code |
22:41:43 | FromDiscord | <Varriount> And if they are different, but not too different, then I feel like it might be better to go with just `lent` (or `var`) because I can see this tripping up users multiple times. |
22:42:01 | FromDiscord | <Zachary Carter> for instance, my library has a bunch of different allocation functions that ultimately use `alloc` or `allocShared` depending on whether thread support is enabled or not |
22:42:14 | FromDiscord | <Zachary Carter> this allows me to track unsafe allocations and detect leaks and also trace memory allocations by subsystem in my project |
22:42:43 | FromDiscord | <Hi02Hi> oh sorry Varriount for assuming you knew more than me on that |
22:43:03 | FromDiscord | <Zachary Carter> since I am using threads in several of my subsystems, my allocations will almost always be on the shared heap so I need to pass pointers around everywhere internally, and pointer arithmetic is handy often |
22:43:30 | FromDiscord | <Zachary Carter> doing this safely would require channels and other abstractions that just aren't worth the performance hit at the end of the day |
22:44:02 | FromDiscord | <Zachary Carter> especially since I'm calling into assembly code for creating / switching between fibers |
22:44:17 | FromDiscord | <Zachary Carter> there's just no good safe way to do this stuff |
22:44:49 | FromDiscord | <Zachary Carter> or at least I don't know of one - if there is one, I'm sure it would take me a long time to adopt / learn / implement |
22:45:52 | FromDiscord | <Varriount> Hm. Is there any technical reason why creating a `distinct FileHandle` type and implementing `=sink`, `=destroy`, and `=copy` procedures on it, would be a bad idea? |
22:46:09 | FromDiscord | <Varriount> I could have sworn I came up with a reason last night, but can't remember what it was. |
22:46:45 | FromDiscord | <dom96> @Zachary Carteryour library provides abstractions which are hopefully safe, of course you need to do unsafe things at the "edges" |
22:46:58 | FromDiscord | <Hi02Hi> isnt a FileHandle a string? why should have a different `=destroy`? |
22:47:02 | FromDiscord | <dom96> the Nim GC does unsafe stuff too, but hopefully it's tested well enough and provides abstractions that are safe |
22:47:27 | FromDiscord | <Zachary Carter> well yeah a lot of stdlib does |
22:47:33 | FromDiscord | <Varriount> In reply to @Hi02Hi "isnt a FileHandle a": It's a cint on Linux. |
22:47:49 | FromDiscord | <Varriount> FileHandle is a file descriptor |
22:48:10 | FromDiscord | <Zachary Carter> ultimately I just expose a C API to my users so they can come up with whatever abstraction they want on top of it 🙂 |
22:48:59 | FromDiscord | <Zachary Carter> and can write their code in whatever language they want |
22:49:04 | FromDiscord | <Zachary Carter> as long as it can interop with C |
22:49:45 | FromDiscord | <Zachary Carter> I'm sure my project would fail any kind of static safety analysis though |
22:49:52 | FromDiscord | <Zachary Carter> horribly |
22:50:05 | FromDiscord | <dom96> What you all think? 🙂 https://media.discordapp.net/attachments/371759389889003532/855580150002090014/nim_real_time_chat_bridging.png |
22:50:30 | FromDiscord | <Zachary Carter> can we get rid of gitter? |
22:50:41 | FromDiscord | <Zachary Carter> does anyone still use it really? |
22:50:47 | FromDiscord | <dom96> yeah, some do |
22:52:51 | FromDiscord | <rainbowasteroids> rip telegram |
22:53:12 | FromDiscord | <Rainbow Asteroids> ayy that was fast |
22:53:32 | FromDiscord | <dom96> also gonna add irclogs in there |
22:55:18 | FromDiscord | <leorize> linking #nim\:envs.net would be better, since it's a collection of all rooms |
22:55:43 | FromDiscord | <dom96> This chart is about how we bridge channels though |
22:55:54 | FromDiscord | <dom96> We bridge #main to the one I linked |
22:56:09 | FromDiscord | <dom96> don't worry we'll have a link to the space in the article and front page |
23:00:00 | FromDiscord | <InventorMatt> Why can't telegram be bridged with the others? |
23:00:14 | FromDiscord | <dom96> it can, I'm just not sure whether it should |
23:01:28 | FromDiscord | <InventorMatt> Fair enough |
23:01:51 | FromDiscord | <leorize> you can just go ask the telegram people \:p |
23:01:55 | FromDiscord | <dom96> I did |
23:01:58 | FromDiscord | <dom96> no one answered lol |
23:05:54 | FromDiscord | <rainbowasteroids> They don't need any bridges as they are real men who just jump across whenever the issue arises. |