01:09:55 | * | m171273 joined #nim |
01:14:19 | * | m171273 quit (Ping timeout: 250 seconds) |
01:29:46 | FromGitter | <awr1> https://forum.nim-lang.org/t/2569 looking at this |
01:30:14 | FromGitter | <awr1> i halfway feel like there should be a pointer arithmetic module because it occasionally becomes a little necessary |
01:30:20 | FromGitter | <awr1> although the other half of me is like "no" |
01:33:01 | FromGitter | <awr1> (in the style of say, `std/lenientops`) |
01:40:02 | * | theelous3 quit (Ping timeout: 245 seconds) |
01:42:35 | * | snifftek quit (Remote host closed the connection) |
01:59:03 | * | m171273 joined #nim |
02:00:13 | * | m171273 quit (Client Quit) |
02:03:24 | * | abm quit (Quit: Leaving) |
02:21:10 | * | snooptek joined #nim |
02:43:08 | * | snooptek quit (Remote host closed the connection) |
02:44:13 | * | snooptek joined #nim |
02:50:03 | * | nif quit (Quit: ...) |
02:50:12 | * | nif joined #nim |
02:54:48 | * | lritter quit (Ping timeout: 268 seconds) |
02:55:06 | * | lritter joined #nim |
03:00:28 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
03:00:53 | * | laaron joined #nim |
03:06:37 | * | laaron quit (Remote host closed the connection) |
03:06:58 | * | laaron joined #nim |
03:44:40 | * | laaron- joined #nim |
03:44:42 | * | rockcavera quit (Remote host closed the connection) |
03:44:44 | * | laaron quit (Remote host closed the connection) |
03:59:26 | * | endragor joined #nim |
04:06:47 | * | laaron- quit (Remote host closed the connection) |
04:09:13 | * | laaron joined #nim |
04:18:39 | * | rockcavera joined #nim |
04:19:53 | * | nsf joined #nim |
04:38:46 | * | fjellfras joined #nim |
04:51:15 | * | arecaceae quit (Remote host closed the connection) |
04:51:39 | * | arecaceae joined #nim |
05:00:30 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
05:01:07 | * | laaron joined #nim |
05:28:21 | * | solitudesf- joined #nim |
05:38:22 | Araq | deech: I don't know how to verify stuff but more effort has been spent on the "destructor spec" than on most other aspects of the language |
05:39:01 | Araq | and we also have a document for symbol lookups in the works |
05:49:58 | * | LargeEpsilon joined #nim |
06:22:35 | * | PMunch joined #nim |
06:23:43 | * | narimiran joined #nim |
06:31:08 | * | oalvarez quit (Ping timeout: 244 seconds) |
06:39:38 | PMunch | Hmm, is there a module in the standard library or a package that can do HTML escaping? |
06:45:16 | * | shomodj joined #nim |
06:52:51 | * | shomodj quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
06:53:48 | * | shomodj joined #nim |
06:54:14 | * | shomodj quit (Client Quit) |
06:58:28 | * | eterps joined #nim |
07:00:00 | * | gmpreussner quit (Quit: kthxbye) |
07:00:28 | * | krux02 joined #nim |
07:00:33 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
07:00:52 | * | laaron joined #nim |
07:04:22 | * | gmpreussner joined #nim |
07:18:29 | * | ng0 joined #nim |
07:21:41 | * | eterps quit (Quit: WeeChat 2.5) |
07:21:50 | * | eterps joined #nim |
07:27:26 | * | eterps is now known as terps |
07:37:39 | * | Vladar joined #nim |
07:41:01 | * | shomodj joined #nim |
07:42:55 | Zevv | and, did you find it? :) |
07:47:36 | * | actuallybatman quit (Ping timeout: 244 seconds) |
08:04:06 | FromGitter | <arnetheduck> @deech we've considered it, potentially starting with a subset of the language |
08:06:27 | FromGitter | <awr1> w/r/t earlier talk on hypothetical nim cross-platform future UI library: i'm curious to know what scope araq or others had in mind |
08:08:18 | FromGitter | <arnetheduck> @awr1 "good luck" |
08:08:19 | FromGitter | <awr1> qt-ish native controls? or "electron-like, but native?" |
08:08:45 | FromGitter | <awr1> there was that ocaml electron-like library i saw a while back |
08:08:46 | FromGitter | <awr1> https://github.com/revery-ui/revery |
08:10:36 | * | floppydh joined #nim |
08:15:16 | * | hoijui joined #nim |
08:15:37 | Araq | awr1: basically what libui offers, but better event handling (I found its event handling to be so incomplete that became unusable) |
08:15:53 | Araq | an event based canvas with text rendering capabilities |
08:16:20 | Araq | maybe some native widgets but if I can draw stuff, I can write every widget I need |
08:16:32 | Araq | and it will portable and look the same everywhere |
08:17:46 | Araq | "native look and feel" is for toys, I don't give a crap if my video editor uses "Windows' native buttons" |
08:18:44 | Araq | on the other hand using the native "printer dialog" or "file open dialogs" is very much appreciated |
08:19:25 | Araq | so ... we need to find some pragmatic compromise |
08:19:45 | * | shomodj quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
08:19:46 | shashlick | Isn't that a huge endeavor? |
08:20:23 | PMunch | Zevv, nope |
08:21:18 | PMunch | shashlick, yes |
08:22:05 | shashlick | Perhaps because most gui libs in c/c++ world also end up providing an stdlib of sorts |
08:22:41 | shashlick | Considering Nim already has one, maybe it isn't as much work |
08:22:57 | Araq | it's much work |
08:23:13 | Araq | I hoped somebody would steal code from libui and c2nim it |
08:23:31 | PMunch | And to address Araqs "I don't give a crap if my video editor uses [...]" comment. It's not only about look and feel (although for Linux users who are used to setting a system-wide Gtk/Qt theme it's super annoying when some application decides to draw it own stuff). The more important issue is accesibility. Want to make a tool that people with physical or mental disabilities can use you better use the native controls. That way you get all the OSes |
08:23:32 | PMunch | accessibility tools for free |
08:25:25 | Araq | good point |
08:29:18 | PMunch | And besides, you will also get any updates to things like 4k UI scaling, better integration into system appearances, etc. |
08:29:49 | Araq | but then you are in the very messy "how can I write custom widgets" land |
08:30:34 | PMunch | Ah yes |
08:30:39 | Araq | and most applications that I use are based on a "custom widget", the text editor, this chat, the browser, a video editor, ... |
08:32:02 | Araq | but I guess business apps are fine with premade TableWidget and buttons |
08:32:24 | PMunch | True, to get 100% cross-platform/-framework custom widgets you would have to implement your own drawing toolkit and map that to whatever the underlying framework supports |
08:36:20 | Araq | that's why the browser-based stuff always wins |
08:37:37 | * | fredrik92 is now known as couven92 |
08:38:21 | Araq | in C++ there is a proposal for adding web_view to the stdlib |
08:38:28 | PMunch | I did some thinking about this for the ergonomics of the library I want to write. Basically I ended up categorising applications into two categories, data/algorithm-based and interaction-based. A data/algorithm-based application is something that's more or less just an interface for an underlying algorithm or data manipulation tool. Think of something like a video converter, a password manager, a system diagnostics application like the task manager, etc. |
08:38:28 | PMunch | They are generally more indifferent to their interface, focusing more on the actual "meat" of the application which is the data collection/manipulation. Then you have the interaction-based tools, like a calculator, a text editor, or a web browser. They are typically much more picky about their interface, because their entire reason d'etre is to allow the user to interact with something in a more ergonomic way. Of course most applications fall somewhere on a |
08:38:28 | PMunch | spectrum between these extremes, but I found the categories to help a bit when I was considering how to think of widget creation. |
08:38:47 | PMunch | Yeah the browser-based stuff has some pros |
08:39:00 | Araq | and then C++ finally would have a "UI lib" in std:: |
08:40:17 | Araq | super silly IMO, but it does show the browser's importance. |
08:40:40 | PMunch | Mainly that people know how to create interfaces in them (because most people in tech have done something with webpages), and the fact that we've spent the better part of three decades slowly getting to a point where they more or less render the same thing on all platforms. |
08:48:40 | FromGitter | <mratsim> @awr1, ptr_arithmetic module sounds ok |
08:49:24 | Araq | a stdlib addition? boooh! |
08:49:27 | Araq | :P |
08:49:56 | * | shomodj joined #nim |
08:51:47 | FromGitter | <arnetheduck> like https://github.com/status-im/nim-stew/blob/master/stew/ranges/ptr_arith.nim ? |
08:55:46 | livcd | Araq: i am very skeptical about a cross platform UI lib (unless it is not just a fork of libui) |
08:58:21 | FromGitter | <mratsim> The posts by GordonBGood are so long ~_~ https://forum.nim-lang.org/t/5083 |
09:00:27 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
09:00:58 | * | laaron joined #nim |
09:01:59 | Araq | livcd: why? |
09:04:21 | livcd | Have you seen a good looking libui app ? |
09:05:23 | * | mheinz joined #nim |
09:08:04 | Araq | I don't know if I've seen a libui app in the wild. it's pretty new |
09:14:15 | * | mheinz quit (Remote host closed the connection) |
09:16:39 | livcd | Well yeah |
09:18:21 | livcd | btw it's fascinating how many chinese users are interested in something like wNim (this is Go's wNim) https://github.com/lxn/walk/issues |
09:22:19 | * | shomodj quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
09:22:45 | * | shomodj joined #nim |
09:23:15 | Araq | https://forum.dlang.org/post/[email protected] cyclic import problems in D. |
09:23:32 | Araq | they have this feature for a decade now or something. |
09:24:19 | FromGitter | <alehander42> @mratsim they are shorter than your RFC-s :P |
09:24:58 | Araq | lol |
09:27:20 | * | leorize quit (Remote host closed the connection) |
09:27:51 | * | shomodj quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
09:28:10 | * | leorize joined #nim |
09:29:49 | FromGitter | <mratsim> Obivously you didn’t read his post on the prime sieves |
09:29:55 | * | laaron quit (Remote host closed the connection) |
09:30:12 | * | laaron joined #nim |
09:32:52 | FromGitter | <mratsim> Also it’s condensed of a couple of hours of videos and hundreds of page of theses and papers: https://github.com/numforge/laser/blob/master/research/runtime_threads_tasks_allocation_NUMA.md |
09:38:42 | * | theelous3 joined #nim |
09:49:29 | PMunch | Hmm, any of you currently playing with wxWidgets in Nim? |
09:49:47 | PMunch | Was poking around at some ix.io pastes and stumbled across this: ix.io/1RD0 :P |
09:54:03 | * | stefanos82 joined #nim |
09:54:27 | shashlick | Just about done with vacation, plan on spending some quality time on nimterop next few weeks |
09:54:57 | shashlick | Any burning issues, please add or vote on the issue tracker |
09:55:39 | shashlick | Once I feel I've actually achieved something, I will try working on the dll stuff in feud again |
09:59:51 | * | shomodj joined #nim |
10:01:25 | * | abm joined #nim |
10:02:51 | * | laaron quit (Remote host closed the connection) |
10:05:02 | * | laaron joined #nim |
10:06:02 | * | krux02 quit (Remote host closed the connection) |
10:06:37 | * | krux02 joined #nim |
10:10:26 | * | fjellfras quit (Quit: Leaving) |
10:11:50 | * | fjellfras joined #nim |
10:20:30 | FromGitter | <alehander42> @mratsim of course, but this just proves the point: sometimes one needs more space to represent his ideas/comments |
10:30:25 | * | laaron quit (Remote host closed the connection) |
10:36:50 | * | laaron joined #nim |
10:38:54 | * | fjellfras quit (Quit: Leaving) |
10:54:58 | * | gmpreussner quit (Ping timeout: 272 seconds) |
10:57:22 | * | laaron quit (Remote host closed the connection) |
10:58:26 | * | laaron joined #nim |
11:00:20 | * | gmpreussner joined #nim |
11:00:39 | * | laaron quit (Client Quit) |
11:08:53 | * | laaron joined #nim |
11:09:36 | * | laaron quit (Remote host closed the connection) |
11:10:12 | * | laaron joined #nim |
11:16:08 | * | clyybber joined #nim |
11:29:15 | PMunch | The Nim playground now properly converts ANSI colour codes: https://play.nim-lang.org/#ix=1RDk (yay!) |
11:29:52 | PMunch | But more importantly this solves the issue where parts of Nim output was seen as HTML and rendered incorrectly |
11:30:27 | PMunch | Now the output should be rendered just like it is in the terminal, but with full colour/bold/italics support |
11:30:44 | clyybber | awesome! |
11:41:18 | FromGitter | <mratsim> Nim Evangelist Task Force: Assemble —> https://www.reddit.com/r/ProgrammingLanguages/comments/cq4b1x/compiled_language_that_can_interpret_itself/ewuizax/ |
11:41:23 | FromGitter | <mratsim> Game devs especially |
11:43:44 | FromGitter | <zetashift> @mratsim would be careful with HCR advertising, it's there but largely untested, no? |
11:44:07 | FromGitter | <mratsim> @zacharycarter decided to be our guinea pig :p |
11:44:48 | FromGitter | <zetashift> for the greater good! |
11:45:45 | FromGitter | <zetashift> also unrelated but julia can be compiled iirc |
11:47:03 | FromGitter | <mratsim> you cannot build dlls/static binary with Julia |
11:47:14 | FromGitter | <mratsim> it’s something they are still working on |
11:48:41 | FromGitter | <deech> Araq, PMunch: I have a fairly high coverage binding to FLTK (https://fltk.org) in Haskell (https://github.com/deech/fltkhs), I know the default looks ugly but it's quite customizable (https://github.com/deech/fltkhs-themes-demo) and very easy to install across platforms and produce self-contained static binaries. It's a lot of work to make a nice wrapper but I have a lot of the tedious C-binding bits ready to go |
11:48:41 | FromGitter | ... (https://github.com/deech/fltkhs/tree/master/c-src). I've wanted to port it to Nim for quite a bit now. There is a Nim port out there (https://github.com/Skrylar/nfltk) but it's not as far along. |
11:49:43 | FromGitter | <zetashift> https://github.com/JuliaLang/PackageCompiler.jl I recall it being early development yea, but you can try it out :P |
11:51:02 | * | lritter quit (Ping timeout: 258 seconds) |
12:03:49 | * | dddddd joined #nim |
12:07:16 | * | terps quit (Ping timeout: 264 seconds) |
12:07:59 | * | Kaivo joined #nim |
12:08:16 | * | terps joined #nim |
12:12:29 | FromGitter | <zacharycarter> I will be a guinea pig for HCR all day long |
12:12:37 | FromGitter | <zacharycarter> but we need someone to fix it first :P |
12:37:30 | FromGitter | <bevo009> Is there a timer option when compiling? ⏎ I can't see an option in nim --fullhelp |
12:39:21 | * | shomodj_ joined #nim |
12:42:33 | * | shomodj quit (Ping timeout: 245 seconds) |
12:48:29 | * | nsf quit (Quit: WeeChat 2.4) |
12:50:20 | * | laaron quit (Remote host closed the connection) |
12:53:11 | * | laaron joined #nim |
13:10:25 | PMunch | bevo009, what kind of timer where you thinking of? |
13:11:47 | FromGitter | <bevo009> Just times the program running time, like Code Runner does automatically |
13:12:06 | PMunch | Well on Linux you can just call it with `time` |
13:13:05 | FromGitter | <bevo009> I'm looking for one I can integrate with F6 Nim command |
13:15:09 | PMunch | In an editor? |
13:15:17 | * | Vladar quit (Remote host closed the connection) |
13:15:24 | PMunch | Well that depends on your editor.. |
13:15:40 | FromGitter | <bevo009> vs code |
13:15:49 | FromGitter | <bevo009> I found this for timing a specific code block while I was looking: ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5d54098453490e334dee3613] |
13:15:52 | PMunch | Again, if you're on Linux you could create an alias for Nim to run `time nim` instead |
13:15:58 | PMunch | That way you would always get timing information |
13:16:33 | FromGitter | <bevo009> Oh ok you just place time before your main nim command |
13:16:59 | PMunch | Yes, time is a program that runs the command after it and returns the time it took to run it |
13:17:07 | PMunch | Can be appended to pretty much anything |
13:17:35 | FromGitter | <bevo009> cheers, thats great |
13:17:53 | PMunch | What would be cool though was if Nim could have a timed mode where it would output timings for the different parts of the compilation |
13:18:17 | PMunch | Like how long did parsing take, what about macro expansion, C compilation, etc. |
13:19:46 | FromGitter | <bevo009> yes it would |
13:20:24 | FromGitter | <bevo009> After trying inserting time into code runners custom command, it's automatic timing is prstty correct |
13:23:07 | livcd | when i compile with cpp and run on windows server 2012 i get this https://privatebin.net/?e3733c229028e67a#3iGd9Sz4N5fsoc1bw5rtoETVyVKWbUgnZXzFjDrfme5u |
13:30:04 | livcd | ooops i know |
13:35:55 | * | salewski joined #nim |
13:38:11 | salewski | I would need some support for our new Chinese community, heterogeneous container see https://forum.nim-lang.org/t/5095 |
13:41:43 | * | salewski quit (Quit: WeeChat 2.5) |
13:42:10 | * | endragor quit (Remote host closed the connection) |
13:45:47 | FromGitter | <mratsim> @bevo009, use the criterion package or “import profile" |
13:46:21 | FromGitter | <mratsim> https://github.com/LemonBoy/criterion.nim |
13:46:49 | clyybber | Araq: For some reason nkInt8Lit, nkIntLit or nkNilLit sometimes doesn't have a type. |
13:47:12 | clyybber | So for isExpression its not enough to check not isEmptyType |
13:47:26 | FromGitter | <mratsim> and this is my profiling code: https://github.com/mratsim/weave/blob/master/e04_channel_based_work_stealing/profile.nim#L52-L55 with the timers: https://github.com/mratsim/weave/blob/master/e04_channel_based_work_stealing/timer.nim @bevo009 |
13:49:23 | FromGitter | <bevo009> @mratsim cheers! I'll check it out |
13:50:37 | * | Kaivo quit (Quit: WeeChat 2.5) |
13:51:10 | * | floppydh quit (Quit: WeeChat 2.5) |
13:55:13 | * | Kaivo joined #nim |
14:08:52 | Araq | clyybber: meh ok |
14:10:30 | clyybber | Do you know why that happens? |
14:10:48 | clyybber | I mean for nkNilLit it makes sense, but for the other ones? |
14:11:00 | clyybber | Are they not fully resolved yet? |
14:13:51 | Araq | I remember it happens for some complex macro cases |
14:14:23 | Araq | and I remember teaching the backend about it was less work then changing the frontend |
14:14:28 | * | PMunch quit (Remote host closed the connection) |
14:14:32 | clyybber | Ok. |
14:14:51 | Araq | but now it's the 2nd time somebody stumbles over it |
14:14:59 | Araq | so we could have a deeper look |
14:15:05 | clyybber | Araq: Yeah |
14:15:38 | clyybber | Araq: Is it intended that nkIfExpr sometimes includes nkElifBranch instead of nkElifExpr ? |
14:16:17 | Araq | there is no difference really |
14:16:29 | Araq | it was a design mistake to distinguish them |
14:17:13 | clyybber | Should be pretty easy to unify them, right? |
14:22:12 | Araq | no, it's very hard |
14:23:03 | Araq | the macros.nim enum is mapped 1:1 to the ast.TNodeKind enum |
14:23:18 | Araq | so every change that is not just "added an enum field at the end" causes endless bootstrapping problems |
14:27:18 | Araq | we should use a string based comparison |
14:28:12 | clyybber | Couldn't one just do const nnkElifExpr = nnkElifBranch in macros.nim |
14:29:28 | Araq | it's the nature of bootstrapping |
14:29:41 | Araq | you would need to update macros.nim and the Nim compiler binary at the same time |
14:29:45 | Araq | and that's impossible |
14:30:03 | Araq | so first you need to eliminate the binary dependency |
14:30:41 | * | mattmurr joined #nim |
14:31:18 | clyybber | But the compiler doesn't rely on macros.nim does it? |
14:32:09 | Araq | it uses macros in msgs.nim and uses json.nim that uses macros |
14:32:19 | Araq | and maybe also elsewhere |
14:32:23 | clyybber | Argh |
14:32:42 | clyybber | So how could it ever be fixed? |
14:33:08 | clyybber | Manually changing the C source of the compiler? |
14:33:38 | * | actuallybatman joined #nim |
14:36:52 | Araq | you need to patch of opcNNewNimNode: in vm.nim |
14:37:01 | Araq | and then wait for a stable release |
14:37:12 | Araq | and then you can fix it |
14:37:36 | Araq | interestingly we avoided this mistake for TMagic :P |
14:39:26 | clyybber | Do you intend to fix this before 1.0? |
14:39:49 | Araq | now that you reminded me ... |
14:40:23 | Araq | it's one of these time bombs we need to disarm before v1, yes |
14:43:16 | * | terps quit (Ping timeout: 264 seconds) |
14:44:01 | clyybber | Yeah I agree |
14:44:45 | clyybber | Araq: Is there a reason that {.discardable.} is not just implemented as a transformation to discard someDiscardableProc ? |
14:45:45 | Araq | the transformation would need to be done in the sem'check and then the macros could see it |
14:46:30 | clyybber | Would that be a problem? I mean if we change the spec? |
14:48:32 | Araq | we don't have a spec for 'typed' ASTs |
14:48:41 | Araq | :-( |
14:48:45 | * | terps joined #nim |
14:49:57 | clyybber | Well, even better ;D |
14:51:11 | clyybber | Maybe discardable can even be implemented as a macro |
14:52:44 | Araq | hardly |
14:55:51 | * | theelous3_ joined #nim |
14:58:52 | clyybber | Would you be ok with me including the discardable rewrite in my injectdestructors refactor? |
14:59:40 | Araq | I remember we tried that one before and it broke stuff |
14:59:56 | Araq | please don't touch it, we have more important things to do |
14:59:56 | clyybber | Ah, ok. Then I'm just gonna work around it for the moment |
14:59:59 | clyybber | Yeah |
15:00:16 | Araq | PARTIALLY MATERIALIZED OBJECTS! |
15:00:21 | Araq | ;-) |
15:00:33 | Araq | we need them. it's the most important thing |
15:01:15 | clyybber | Haha, I'm on it |
15:06:02 | FromGitter | <mratsim> most important thing for v1? |
15:06:51 | Araq | of course, what else |
15:08:16 | Araq | fixing typedesc and concept bugs so that you can destroy your icache more easily and wish for more dynamic binding? |
15:13:19 | FromGitter | <deech> What are partially materialized objects? |
15:13:42 | clyybber | Araq: How can I check wether a call is a call to a discardable proc? `if n.kind in nkCallKinds and sfDiscardable in n[0].sym.flags` doesnt seem to work |
15:15:47 | Araq | why do you need to check for that? |
15:16:05 | Araq | deech: something we recently invented |
15:17:43 | FromGitter | <deech> Nice. |
15:18:01 | * | terps quit (Ping timeout: 250 seconds) |
15:19:24 | clyybber | Araq: I want to have my assert(not isExpression(n)) at the start of pStmt |
15:19:43 | clyybber | where pStmt is a simplified version of p |
15:20:01 | Araq | yeah, I gave up on that idea in backend code |
15:20:21 | Araq | never got the assertion right, but the logic usually was fine |
15:27:55 | * | endragor joined #nim |
15:37:09 | disruptek | maybe you should RFC partially materialized objects and see if any feedback provokes changes to the design before implementation is complete. |
15:37:25 | * | terps joined #nim |
15:38:06 | Zevv | is this partially materialized objects some kind of running gag, or is that somehing real? |
15:38:34 | disruptek | it's a fair question, if a funny one. 😁 |
15:39:08 | disruptek | if i understand it, it's the concept of only partially composing objects in a function scope because they need never escape as fully-realized objects. |
15:39:24 | disruptek | newruntime shenanigans. |
15:41:10 | Zevv | sounds plausible |
15:43:01 | Zevv | but since an object is already almost nothing; if you have an object on the stack that stays there just as long as the function lives, nothing is even "materialized" anyway, right? its members are nothing more then adresses on the stack frame |
15:43:50 | disruptek | i think we're talking newruntime accounting overhead here. |
15:44:11 | Araq | for blobs yes, but consider MyObject(x: value) where typeof(value) has an expensive copy |
15:45:04 | * | terps quit (Ping timeout: 264 seconds) |
15:45:21 | Zevv | right, that makes sense |
15:45:34 | Araq | with PMO you can remove different construction/destruction pairs than what our control flow analysis can do |
15:45:35 | disruptek | objects: almost nothing. |
15:46:28 | disruptek | it's more like simply omitting spec inside a vague scope. |
15:46:33 | Zevv | oh it already got its own TLA, great :) |
15:46:53 | disruptek | or, it's vague in a specific scope. |
15:47:29 | Araq | you don't have to make it scope based |
15:47:53 | disruptek | oh, it's graph-based? |
15:48:22 | disruptek | is this a valid typeclass? int|string|enum |
15:48:38 | Araq | sure. |
15:49:36 | disruptek | i can't figure out why i cannot integrate two generics -- one for int|string and one for enum. maybe i can create a test. |
15:52:11 | Zevv | can you genericize on a non-specific enum type then? |
15:52:28 | disruptek | all my tests say yes. |
15:52:42 | Zevv | wow |
15:53:07 | * | terps joined #nim |
16:05:54 | krux02 | eval: 17+4 |
16:06:06 | krux02 | I wonder what the syntax for NimBot was |
16:06:13 | krux02 | NimBot: what is your syntax |
16:06:21 | disruptek | it's !eval |
16:06:28 | disruptek | !eval echo 17+4 |
16:06:30 | NimBot | 21<br/> |
16:06:32 | krux02 | !eval 17+4 |
16:06:34 | NimBot | Compile failed: <span style="color: #66d9ef;">Hint: </span>used config file '/nim/config/nim.cfg'<span style="color: #50fa7b;"> [Conf]</span><br/><span style="color: #66d9ef;">Hint: </span>system<span style="color: #50fa7b;"> [Processing]</span><br/><span style="color: #66d9ef;">Hint: </span>widestrs<span style="color: #50fa7b;"> [Processing]</span><br/><span style="color: #66d9ef;">Hint: </span>io<span style="color: #50fa7b;"> [Processing]</span><br/><span style... |
16:06:52 | disruptek | nimbot is pretty verbose today. |
16:06:54 | krux02 | nice, I get html in my irc |
16:07:10 | disruptek | next stop javascript. |
16:07:21 | krux02 | yes stop javascript |
16:07:35 | FromGitter | <bobeff> Hi, could someone replace this script `https://nim-lang.org/choosenim/init.sh` with the latest version from here https://github.com/dom96/choosenim/blob/master/scripts/choosenim-unix-init.sh, because it supports `*msys*`. I'm trying to add support for Windows in Travis CI for Nimble. Of course I can change the URL but I suspect that it is intentionally not from `choosenim`'s master branch. |
16:07:37 | disruptek | 🤣 |
16:08:23 | krux02 | !eval test.nims |
16:08:29 | NimBot | Compile failed: <span style="color: #66d9ef;">Hint: </span>used config file '/nim/config/nim.cfg'<span style="color: #50fa7b;"> [Conf]</span><br/><span style="color: #66d9ef;">Hint: </span>system<span style="color: #50fa7b;"> [Processing]</span><br/><span style="color: #66d9ef;">Hint: </span>widestrs<span style="color: #50fa7b;"> [Processing]</span><br/><span style="color: #66d9ef;">Hint: </span>io<span style="color: #50fa7b;"> [Processing]</span><br/><span style... |
16:08:56 | disruptek | must be related to pmunch's color output support. |
16:10:11 | krux02 | it is nice that because of all the colors it cats cut off before it even gets to the error message |
16:10:26 | FromGitter | <Varriount> Araq: What is a partially materialized object? |
16:11:01 | disruptek | precursure to dehydrated objects. |
16:15:36 | clyybber | Araq: implictlyDiscardable from semstmts works fine |
16:21:09 | FromDiscord_ | <kodkuce> hmm am back 😃 , anyway i am trying to write code to kick zombie ws connections if they inactive |
16:21:16 | FromDiscord_ | <kodkuce> but i get this error that i dont get |
16:21:17 | FromDiscord_ | <kodkuce> https://pasteboard.co/IsG2oqT.png |
16:24:43 | narimiran | kodkuce look at your proc definition, and then at your call |
16:28:06 | FromDiscord_ | <kodkuce> lol i frogot to pass paremetar xD |
16:28:39 | narimiran | and then you forgot to read the error message and look at your code :P |
16:30:24 | FromDiscord_ | <kodkuce> nah i did just got <> confused me |
16:30:48 | * | hoijui quit (Quit: Leaving) |
16:31:41 | FromDiscord_ | <kodkuce> but hmm now i get more |
16:32:10 | FromDiscord_ | <kodkuce> https://pasteboard.co/IsG75BT.png |
16:32:30 | FromDiscord_ | <kodkuce> wtf it says it expets float ??? |
16:34:03 | solitudesf- | you dont see that dash after the proc name? |
16:34:19 | * | solitudesf- quit (Quit: Leaving) |
16:34:30 | disruptek | mic drop |
16:34:36 | * | solitudesf joined #nim |
16:35:14 | FromDiscord_ | <kodkuce> lol i really dident |
16:35:23 | narimiran | solitudesf: did you change your username just to make that comment? |
16:35:23 | FromDiscord_ | <kodkuce> time for slaping myslef |
16:36:29 | solitudesf | nah, freenode just playing with me |
16:38:10 | narimiran | kodkuce btw, what version of nim are you using? |
16:38:43 | narimiran | because currently that output should be indented and a bit easier to read |
16:41:11 | FromDiscord_ | <kodkuce> Nim Compiler Version 0.20.99 [Linux: amd64] |
16:42:48 | narimiran | hmm, then i guess vscode strips the initial spaces |
16:44:36 | * | uvegbot joined #nim |
16:45:33 | * | shomodj_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
16:48:04 | clyybber | Araq: In destructors/tobjfield_analysis:35 why does nim generate a default case in the C code? |
16:48:40 | * | zyklon quit (Ping timeout: 264 seconds) |
16:49:12 | clyybber | Because it is not clear to me or my code what it should sink in the default case. |
16:49:44 | clyybber | So my code currently generates invalid: eqsink(&y, ) |
16:51:16 | * | endragor quit (Remote host closed the connection) |
16:55:36 | * | py0tr joined #nim |
17:00:22 | * | py0tr quit (Remote host closed the connection) |
17:10:08 | * | shomodj joined #nim |
17:10:53 | * | jmiven_ joined #nim |
17:14:52 | * | krux02 quit (Remote host closed the connection) |
17:19:29 | * | jmiven quit (Quit: reboot) |
17:19:55 | * | jmiven_ quit (Quit: WeeChat 2.4) |
17:20:13 | FromDiscord_ | <kodkuce> hmm for simple vlaue types example bool can i pass them as ref ? |
17:20:16 | * | jmiven joined #nim |
17:20:27 | FromDiscord_ | <kodkuce> ref var b = false , or do i have to make a new type? |
17:24:29 | FromDiscord_ | <kodkuce> hmm, duno how to get a referece to variable under my wsconnection |
17:26:12 | leorize | you can't get a reference to a variable.... |
17:26:21 | leorize | and yes you can pass simple types as ref |
17:26:31 | leorize | although I can't think of any good use for them |
17:30:34 | * | leorize quit (Remote host closed the connection) |
17:31:22 | * | leorize joined #nim |
17:35:12 | leorize | Araq: is new runtime safe to use yet (ie. no mem corruption)? |
17:36:08 | leorize | narimiran: can you check this one? should be fixed I think? https://github.com/nim-lang/Nim/issues/11629 |
17:39:19 | FromDiscord_ | <kodkuce> https://pasteboard.co/IsGyoS1.png |
17:40:50 | FromDiscord_ | <kodkuce> lol i frogot F on by RE |
17:41:01 | FromDiscord_ | <kodkuce> so wated to pass this by REF 😃 |
17:45:21 | * | rockcavera quit (Remote host closed the connection) |
17:51:50 | * | shomodj_ joined #nim |
17:54:14 | FromDiscord_ | <kodkuce> duno how to terminate ws connection if player dont auth or just zombie out in 2-3sec after connection |
17:55:12 | * | Jesin quit (Quit: Leaving) |
17:55:38 | * | ng0 quit (Remote host closed the connection) |
17:55:45 | * | shomodj quit (Ping timeout: 268 seconds) |
17:56:43 | * | ng0 joined #nim |
17:57:47 | * | Jesin joined #nim |
18:07:07 | * | shomodj_ quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
18:08:27 | * | laaron quit (Remote host closed the connection) |
18:10:09 | clyybber | leorize: Yeah, new runtime is safe to use. But some things dont work yet i.e. tables |
18:11:01 | clyybber | tables.nim |
18:11:53 | * | laaron joined #nim |
18:12:04 | * | terps quit (Ping timeout: 264 seconds) |
18:14:31 | clyybber | leorize: There is one remaining issue with double free that I'm currently fixing, but you probably won't encounter it. |
18:16:27 | * | terps joined #nim |
18:20:22 | Araq | tables are covered by a tiny test |
18:20:32 | Araq | but sure, they need more love |
18:43:41 | rayman22201 | Do closure iterators / async work with newruntime yet? |
18:52:01 | * | couven92 quit (Read error: Connection reset by peer) |
18:56:49 | dom96 | hello all |
18:58:56 | disruptek | sup boss |
18:59:03 | disruptek | how is the game comin'? |
19:00:49 | dom96 | slowly inching along |
19:05:20 | dom96 | https://github.com/nim-lang/opengl/issues/66 |
19:05:24 | dom96 | 19 upvotes, wtf? |
19:05:36 | * | terps quit (Ping timeout: 252 seconds) |
19:06:21 | disruptek | i believe they call that a `raid`. 😉 |
19:12:25 | * | terps joined #nim |
19:15:04 | * | LargeEpsilon quit (Ping timeout: 246 seconds) |
19:22:48 | * | laaron quit (Write error: Connection reset by peer) |
19:22:48 | * | leorize quit (Remote host closed the connection) |
19:24:08 | * | laaron joined #nim |
19:24:52 | * | jjido joined #nim |
19:34:19 | * | abm quit (Ping timeout: 246 seconds) |
19:43:42 | * | leorize joined #nim |
19:48:32 | * | abm joined #nim |
20:03:09 | * | ehmry quit (Remote host closed the connection) |
20:05:06 | Zevv | Is there a way to use portable terminal colors at compile time? |
20:05:28 | Araq | rayman22201: no. closure iterators have been ported though |
20:05:44 | * | terps quit (Ping timeout: 252 seconds) |
20:06:02 | disruptek | Zevv: you mean more portable than the colored compiler output we currently enjoy? |
20:07:13 | Zevv | Well, the compiler is outputting at copiler runtime, so it has access to stdout |
20:07:27 | Calinou | do you mean the `terminal` module? |
20:07:30 | Zevv | right |
20:08:06 | Zevv | stdout is null at compile time, so it goes *poof* in my face |
20:08:34 | Zevv | I now do ansii escapes by hand, but that is not very nice for non-unix-people |
20:09:39 | Calinou | oh, you want a module that can be used in compile-time strings |
20:09:50 | Calinou | I don't think that exists, at least not if you want to support Windows versions older than 10 |
20:09:51 | rayman22201 | @Araq, cool. Thanks for the update. I wasn't sure based on what Clyybber was saying :-) |
20:16:06 | Zevv | Calinou: that's what I though, thanks |
20:26:15 | FromDiscord_ | <kodkuce> what game? |
20:43:07 | Zevv | In these iterators called somethingIt, is 'it' ment as "it", aka "this" or is it short for "iterator"? |
20:47:40 | disruptek | it's the target of the iteration, a single element|member. |
20:47:51 | disruptek | s/target/result/ |
20:48:28 | disruptek | it's more `this` than `iterator`, i guess. |
20:48:36 | * | sacredfrog quit (Quit: ZNC 1.7.4 - https://znc.in) |
20:51:03 | disruptek | hey, riddle me this: https://play.nim-lang.org/#ix=1RGE -- testing generics and converters; seems fine. |
20:52:23 | disruptek | this one with json doesn't work: https://play.nim-lang.org/#ix=1RGH |
20:52:47 | * | NimBot joined #nim |
20:57:24 | FromDiscord_ | <Kiloneie> Guys, can you give me a quick minute to explain why the commented out code wont pass the if statement(no errors, just it's code wont run): https://play.nim-lang.org/#ix=1RGL |
21:02:56 | rayman22201 | @disruptek, you can't dispatch on return type |
21:04:12 | disruptek | kiloneie: i just fixed it and then the playground broke. |
21:04:39 | disruptek | you should iterate over r_letters.low .. r_letters.high instead and modify everything else to match. |
21:05:09 | disruptek | rayman22201: why does it work in the first example? |
21:05:48 | disruptek | or, where am i dispatching on return type? |
21:06:31 | rayman22201 | you have those converters. They all take `JsonNode` but return different types. |
21:06:40 | rayman22201 | Nim cannot differentiate between them |
21:07:03 | disruptek | none of that code block is executed. |
21:07:33 | disruptek | i just put that in there for comparison; it's like a series of comments. |
21:07:43 | rayman22201 | maybe I misunderstood then |
21:07:52 | rayman22201 | then why not just put it in a comment? |
21:08:26 | rayman22201 | lol. sorry. minor pet peeve. I hate when people use always false if statements as comments. let me look again |
21:08:35 | disruptek | i dunno; i was breaking stuff out and recombining it. i had it working with enum generics separated out and i was trying to figure out why i could not typeclass completely. |
21:12:34 | * | shomodj joined #nim |
21:13:45 | FromDiscord_ | <Kiloneie> Okay i get, what i did was bonkers xD, should echo a bit more often than i already do(which is a LOT) |
21:15:29 | * | vivus joined #nim |
21:18:57 | disruptek | i just don't understand how parseEnum could think it's its type is string inside a generic[enum] implementation. |
21:19:55 | * | solitudesf quit (Ping timeout: 258 seconds) |
21:21:04 | * | lritter joined #nim |
21:22:04 | rayman22201 | It's not parseEnum. The get proc is treating foo["string"] as an enum |
21:22:06 | rayman22201 | not a string |
21:22:17 | rayman22201 | I'm just not sure why yet |
21:24:01 | disruptek | it's interesting that ints, enums, and bools work fine. |
21:24:59 | * | sagax quit (Remote host closed the connection) |
21:32:32 | FromGitter | <alehander42> Kiloneie |
21:32:43 | FromGitter | <alehander42> its because r_letters is not result |
21:33:20 | FromGitter | <alehander42> but you use result.low and .high |
21:33:28 | FromGitter | <alehander42> so maybe you want to result[stuff] |
21:33:38 | FromGitter | <alehander42> or to use r_letters.low and .high |
21:33:50 | FromGitter | <alehander42> many of those can be confusing, so your second version is more clear if works |
21:35:25 | FromDiscord_ | <Kiloneie> It is more clear but i can't then use that loop to access both r_letters and r_values correctly, that was the problem of not wanting to use that one, i'd have to make a dictionary just for that. |
21:35:25 | FromDiscord_ | <Kiloneie> Distruptek's solution worked though, iterating over r_letters.low.. high |
21:36:01 | * | narimiran quit (Read error: Connection reset by peer) |
21:36:15 | FromGitter | <alehander42> sorry didnt realize its fixed :P |
21:36:50 | FromDiscord_ | <Kiloneie> No problem, thanks anyways 😃 |
21:37:04 | rayman22201 | ohhhh. @disruptek, I think I get it. Even the branches that aren't executed must type check. Because the type checking happens even though the branch isn't executed. |
21:37:24 | rayman22201 | maybe a compiler / generics bug. I'm not sure. |
21:37:53 | disruptek | so when i make a statement that causes a generic to get built, it fails compilation because that changes the inputs to that type checking. |
21:38:11 | FromDiscord_ | <Kiloneie> It is kind of hard getting used to a Static typed language after most of my coding experience outside of my computer science high school from ages ago, was in Game Maker(dynamic typing, which can be great, but in the long run i'd rather shoot myself than use dynamic again <.<) |
21:38:42 | disruptek | well, don't shoot yourself. o.O |
21:39:05 | disruptek | nim: better than a speeding bullet to the temple. |
21:39:07 | Zevv | That would make a rad slogan "don't shoot yourself, use nim!" |
21:39:16 | Zevv | hmm that was a bit on-the-edge, imho |
21:39:27 | Zevv | sorry about that |
21:40:14 | FromDiscord_ | <Kiloneie> xD, well it's better to face problems right on that to deal with them hours or days later when they finally occur. |
21:40:45 | rayman22201 | @disruptek. I'm not an expert in the generics code gen part of the compiler, but yes, I think it essentially instantiates a version the proc for each case of the allowed types, and type-checks the instantiation. It has no way to know that branch won't be reached in the string case. |
21:40:57 | disruptek | rayman22201: i can almost grok this, but why does int work while float does not? |
21:41:04 | rayman22201 | also lmao at "don't shoot yourself, use nim!". Should be a sticker :-P |
21:41:31 | rayman22201 | both int and float can be passed into `parseEnum[T]` |
21:41:51 | FromDiscord_ | <Kiloneie> Man this Roman numerals exercise is killing me, third day on it, my brain can't comprehend how to digit to roman O,O |
21:42:27 | rayman22201 | or specifically, when instantiating `parseEnum[T]`, `low[float]()`, `low[int]()` is valid, but `low[string]()` is not. |
21:43:00 | disruptek | yes, but when is T: float|int for `parseEnum`? |
21:43:09 | rayman22201 | ironically, float and int probably shouldn't be allowed either, but you get lucky, because those happen to type check. |
21:43:19 | rayman22201 | It's not! |
21:43:56 | * | Kaivo quit (Quit: WeeChat 2.5) |
21:44:37 | disruptek | it's interesting that json has a `getEnum` in it. |
21:44:43 | rayman22201 | `converter toAnything[T: enum|string|float|int|bool](node: JsonNode): T ` is getting turned into `converter toAnything[T: enum](node: JsonNode): T`, `converter toAnything[T: string](node: JsonNode): T`, `converter toAnything[T: float](node: JsonNode): T`, `converter toAnything[T: int](node: JsonNode): T`, ``converter toAnything[T: bool](node: JsonNode): T` |
21:45:13 | rayman22201 | I.E. the typechecker is putting in the types for each possible type. |
21:45:37 | rayman22201 | and feeding that down to each called proc recursively to see if it type checks for all possible cases. |
21:46:03 | disruptek | so let's say it does. that code won't even compile for T: float, but it compiles for T: int. |
21:47:41 | rayman22201 | you get lucky for int. It happens to typecheck all the way down |
21:48:16 | disruptek | i guess i don't know what "all the way down" means. |
21:48:56 | rayman22201 | Typecheckers are recursive. It's going to replace and check the concrete type for the entire AST |
21:49:26 | rayman22201 | even the branches that won't be accessed at runtime (Because the typechecker can't know anything about runtime) |
21:49:28 | disruptek | i doubt it. it doesn't compile it you don't cast getInt to T: int |
21:49:45 | rayman22201 | That is exactly why you have to cast it |
21:49:57 | disruptek | was there any doubt what getInt might return? |
21:50:11 | rayman22201 | If the typechecker knew about runtime, then you would not have to have the casts inside your branch. |
21:50:22 | disruptek | you cannot get it to work if you cast parseEnum, so... |
21:50:54 | rayman22201 | what do you mean? I don't understand? |
21:51:20 | disruptek | you say i need to cast all the return values to T when i assign them to result, right? |
21:51:52 | disruptek | but, it works fine if you don't cast the result from parseEnum. |
21:52:26 | rayman22201 | you probably do, but it fails earlier in the typecheck, so you don't get that error yet |
21:52:40 | rayman22201 | it doesn't work because parseEnum fails :-P |
21:52:55 | disruptek | no, i mean if you comment out the string and float assignments, the remaining assignments/assertions all work fine. |
21:53:27 | disruptek | compilation breaks because we add float to the generic typeclass. |
21:53:48 | rayman22201 | yes. I know. that is expected |
21:53:50 | disruptek | (ie. by creating a runtime invocation with that type). but it's fine before that point. |
21:54:03 | rayman22201 | Sorry. This is hard to describe over chat :-/ |
21:56:31 | rayman22201 | Your problem is a typechecker + generics problem. |
21:56:56 | disruptek | it really seems splitbrained to me. |
21:57:33 | FromDiscord_ | <Kiloneie> .removeSuffix cannot remove letters if they are not connected one by one at the end right ? |
21:57:49 | rayman22201 | The way generics work is that for each type you actually use, a version of the function gets code-generated for that type. This is called monomorphization. |
21:58:09 | rayman22201 | it gets converted from "generic version" -> "specific version for that type". |
21:58:38 | disruptek | yes, but it remains unclear as to why adding an invocation of the generic with a float type causes compilation to fail. |
21:58:54 | disruptek | "turtles all the way down" doesn't really elucidate here. |
21:59:02 | disruptek | or s/turtles/types/ |
21:59:14 | rayman22201 | So when the compiler sees, `foo.get[int](....)` it makes an int version of `get` |
21:59:32 | rayman22201 | or whatever other type `string` for example. |
21:59:55 | rayman22201 | Nim does this in a slightly naive way. It does not take into account your if statement over the type. |
22:00:34 | rayman22201 | so, it's going to do `parseEnum[string](...)` even if that function could never possibly get called (Because of your if statement) |
22:00:46 | Araq | if T is int: <-- use 'when T is int' |
22:01:01 | Araq | but all of this code is a bad idea |
22:01:05 | disruptek | can you tell me why this one works? https://play.nim-lang.org/#ix=1RGE |
22:01:18 | disruptek | i mean, i don't even want to use converters. that's the point. |
22:02:04 | disruptek | perfect, thanks Araq! :-D |
22:02:16 | disruptek | and no converter. 😁 |
22:02:48 | rayman22201 | duh, of course, when. That makes perfect sense. The compiler will see that at the right time. |
22:02:54 | clyybber | Zevv: I like that slogan haha |
22:03:02 | Araq | why this one works? well because it's completely different |
22:03:07 | rayman22201 | `if` works at runtime, `when` at compile ttime |
22:03:31 | FromGitter | <deech> disruptek, `Observations = FeralHogs | enum` compiled for you? |
22:04:03 | disruptek | deepend: and you, if you hit the `run` button. 😉 |
22:04:26 | disruptek | that's what started this whole series of machinations... |
22:04:57 | FromGitter | <deech> For my own knowledge what does that syntax even mean? |
22:05:18 | disruptek | it's a typeclass mixing FeralHogs and any enum. |
22:05:41 | rayman22201 | @disruptek, It just happens to work because `enum | FerlHogs` => `enum | range[]`. and `parseEnum` typechecks with both those types. |
22:06:04 | FromGitter | <deech> Dear god. |
22:06:22 | rayman22201 | really @distruptek, you just got lucky |
22:06:33 | rayman22201 | it does not work in the general case |
22:06:58 | disruptek | what is this general case of which you speak? |
22:07:26 | rayman22201 | as in just about any other type |
22:07:32 | rayman22201 | you happen to pick types that play nice |
22:07:42 | clyybber | Araq: Why does the compiler generate an else case for case of statements that cover all cases? |
22:08:27 | Zevv | quantum tunneling |
22:08:31 | rayman22201 | lol |
22:08:34 | disruptek | can you gimme an example where an errant type screws me up? |
22:09:18 | rayman22201 | you have your own example already. The float type in your foo converter |
22:10:04 | disruptek | how do you figure? it works fine if you use `when` to control the checker. |
22:10:41 | rayman22201 | well yeah, `when` is the solution. But The example you sent doesn't use when |
22:10:54 | rayman22201 | the FeralHogs example |
22:11:11 | disruptek | oh, so we can break it by sending it a float. |
22:11:19 | rayman22201 | or a string |
22:11:21 | rayman22201 | yeah |
22:11:29 | disruptek | i mean, people will always write broken code, myself included. |
22:11:50 | disruptek | the only versions that ran were versions that worked, so i'm not too worried here. |
22:11:57 | disruptek | they may as well have had typos. |
22:12:20 | disruptek | or insufficient memory to invoke the compiler. the result is the same. no binary to worry about. |
22:12:50 | rayman22201 | Well yeah, but the whole point of typeclasses is to help avoid those kinds of errors. |
22:12:57 | rayman22201 | But you have to use them properly |
22:13:11 | disruptek | uh, sure. |
22:13:20 | rayman22201 | which means using `when` instead of `if` in these cases. |
22:14:10 | disruptek | so you're saying if i want to write code that's correct, i should correct my code? |
22:15:07 | rayman22201 | lolol. I'm not trying to be an ass. You asked why your feralHogs example worked. We told you why. You got lucky. |
22:15:18 | rayman22201 | Even a broken clock is right twice a day. |
22:15:32 | rayman22201 | You wrote bad code that happened to work. That doesn't make it good code. |
22:16:42 | disruptek | and my point is that as long as the compiler doesn't GIGO, i'm happy. |
22:19:25 | * | rockcavera joined #nim |
22:23:29 | rayman22201 | sure. Does that mean we helped you solve your problem? I was just trying explain what was going on, and why you got lucky with your code example. |
22:27:50 | disruptek | probably the longest 1.5hr of my life, but, uh, sure. |
22:28:08 | rayman22201 | Welcome to programming |
22:28:12 | disruptek | wouldn't you know it, all the tests still pass. 🙄 |
22:28:51 | rayman22201 | all the tests still pass when you do what? |
22:31:33 | * | abm quit (Quit: Leaving) |
22:32:57 | rayman22201 | Also, just because a test suite passes doesn't mean there are no bugs. It just means you haven't written a test that catches a bug. So I don't know what your point is? |
22:35:27 | disruptek | and my point is that as long as the compiler doesn't GIGO, i'm happy. |
22:39:15 | rayman22201 | It's a lot easier to not have GIGO when you actually understand how a feature works, but what ever. to each their own. |
22:45:02 | * | laaron quit (Remote host closed the connection) |
22:47:00 | * | laaron joined #nim |
22:58:15 | clyybber | Araq: You still here? |
23:21:49 | * | shomodj quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
23:41:11 | * | stefanos82 quit (Quit: Quitting for now...) |
23:45:37 | * | laaron quit (Remote host closed the connection) |
23:50:06 | * | laaron joined #nim |