00:04:17 | FromGitter | <zacharycarter> @mratsim you asked me a while ago if I used Nim in my hackathon project... I didn't :( I am so new to machine learning, I would have no idea how to utilize anything other than a library pre-built for ML :P |
00:04:35 | FromGitter | <zacharycarter> Plus I was trying to do all of this on a macbook pro, so I used https://github.com/apple/turicreate |
00:04:50 | FromGitter | <zacharycarter> which actually worked really well for my purposes - although I didn't win... so maybe not. |
00:08:24 | * | francisl quit (Ping timeout: 260 seconds) |
00:21:09 | * | koranza quit (Remote host closed the connection) |
00:25:05 | * | smt quit (Ping timeout: 248 seconds) |
00:26:39 | * | Jesin joined #nim |
00:57:07 | * | BitPuffin quit (Remote host closed the connection) |
03:27:17 | * | endragor joined #nim |
03:28:51 | * | vlad1777d_ quit (Ping timeout: 252 seconds) |
03:37:12 | * | dddddd quit (Remote host closed the connection) |
03:46:27 | * | endragor quit (Remote host closed the connection) |
03:49:26 | * | xkapastel quit (Quit: Connection closed for inactivity) |
03:50:12 | * | endragor joined #nim |
04:00:03 | * | NimBot joined #nim |
04:02:59 | * | d10n-work quit (Quit: Connection closed for inactivity) |
04:07:27 | * | SenasOzys quit (Ping timeout: 240 seconds) |
04:26:47 | * | endragor quit (Remote host closed the connection) |
04:28:01 | * | Snircle quit (Quit: Textual IRC Client: www.textualapp.com) |
04:30:16 | * | endragor joined #nim |
04:56:42 | * | r3d9u11 joined #nim |
05:21:46 | FromGitter | <k0pernicus> Maybe it can be interesting for Nimble to create a « smart » README.markdown file (if no one already exists in the root directory), no? ⏎ A sort of template to explain how to build/install the lib/binary, a short description, the license, etc… ⏎ Just an « easy-way-to-push » for Github/Gitlab users |
05:54:58 | * | endragor quit (Remote host closed the connection) |
06:08:39 | * | nsf joined #nim |
06:20:15 | * | r3d9u11 quit (Remote host closed the connection) |
06:32:20 | * | endragor joined #nim |
06:51:57 | * | donotturnoff joined #nim |
06:52:08 | * | donotturnoff quit (Remote host closed the connection) |
06:55:06 | FromGitter | <survivorm> About Nimble, how about dedicating some server for continuous builds of nimble packages against stable/devel/head each time as any (nim dev/stable/head or package itself) changes? And letting nimble know last build statuses? |
06:55:45 | FromGitter | <survivorm> @Yardanico |
06:57:02 | FromGitter | <survivorm> That may help with the version check process, also may lead to "builds with <version>" tags at package |
06:58:01 | FromGitter | <survivorm> Will immensely help in putting nim projects into production, making things more clear from all points of view |
06:59:24 | FromGitter | <survivorm> (Imagine - you may see that some codebase works with nim <versions ....> not because developer said it is, but because it was also tested automatically |
06:59:57 | FromGitter | <survivorm> And the second tag may be of cause - tests pass |
07:00:51 | FromGitter | <survivorm> like <versions ...> build passes, tests passes, <versions ...> build passes |
07:07:06 | GitDisc | <treeform> survivorm, i actually wanted to try some thing like this but first thing I run into is missing dlls. |
07:07:30 | GitDisc | <treeform> i wish library writers would include the dlls they used. |
07:08:55 | GitDisc | <treeform> on mac and linux the .so files are easier to come by through brew and apt-get but on windows it appears much harder |
07:09:18 | GitDisc | <treeform> but even on mac and linux the libraries don't tell were the .so files should come from. |
07:09:25 | GitDisc | <treeform> or which versions they work with |
07:09:38 | GitDisc | <treeform> for me that appears to be the biggest bottle neck in reproducing builds |
07:10:29 | GitDisc | <treeform> i should they would just include them for mac, linux, windows 32 and windows 64 |
07:11:16 | GitDisc | <treeform> i wish they would just include them for mac, linux, windows 32 and windows 64 |
07:17:33 | * | el_tejon joined #nim |
07:28:16 | FromGitter | <mratsim> @zacharycarter I didn't know about Turi create, it's nice! |
07:28:30 | * | PMunch joined #nim |
07:29:46 | FromGitter | <survivorm> @treeform I think it's another chicken-egg, but much simpler |
07:30:53 | FromGitter | <mratsim> @treeform I would say every project should have an "installation" section in the readme. Also Travis/Appveyor config help to see what is needed. For package manager on Windows there is nuget and chocolate, not sure how many libraries are in there though. |
07:31:09 | FromGitter | <survivorm> If the continuous build system exist and people know of it, AND it produce accurate error messages to maintainer, people will try their packages agains it |
07:31:45 | FromGitter | <survivorm> And, eventually, they'll fix dependancies |
07:32:28 | GitDisc | <treeform> nuge .net only (does not work for nim) and chocolate is ok, but its not brew or apt-get which are a lot better. |
07:32:34 | FromGitter | <survivorm> not everyone, mind you. But we're talking of developing projects, not abandoned |
07:32:58 | GitDisc | <treeform> nuget .net only (does not work for nim) and chocolate is ok, but its not brew or apt-get which are a lot better. |
07:33:08 | GitDisc | <treeform> nuget is .net only (does not work for nim) and chocolate is ok, but its not brew or apt-get which are a lot better. |
07:33:35 | FromGitter | <mratsim> @survivorm auto testing should be done by the author |
07:33:50 | FromGitter | <survivorm> And, of cause, more platforms to build against is better, but its costly |
07:34:03 | GitDisc | <treeform> computers are cheap, dev time is pricy |
07:34:49 | FromGitter | <survivorm> @mratsim Tests should be written by devs, yes. But autobuild system should include tests, why should it not? |
07:35:31 | GitDisc | <treeform> I agree with survivorm, I even wanted to build some thing like this. |
07:35:35 | FromGitter | <mratsim> But reporting the result to a central location might be good |
07:35:46 | FromGitter | <survivorm> @treeform Computers are Cheaper, yes. But dedicated servers, working full-time - i'm not sure |
07:35:47 | GitDisc | <treeform> I think many devs use mac or linux but forget about windows |
07:35:54 | GitDisc | <treeform> and everyone forgets about win32 |
07:36:03 | FromGitter | <survivorm> Yeah |
07:36:36 | FromGitter | <survivorm> And that autobuild system may become great businnes opportunity for nim |
07:36:57 | GitDisc | <treeform> i doubt about businnes opportunity... |
07:37:00 | FromGitter | <survivorm> If ecosystem is PREDICTABLE, risks are mush smaller |
07:37:27 | GitDisc | <treeform> Who builds and maintains this thing: https://nimble.directory/ |
07:37:30 | FromGitter | <survivorm> But, of cause, it's not the only barrier |
07:38:06 | GitDisc | <treeform> https://github.com/FedericoCeratto/nim-package-directory |
07:38:15 | GitDisc | <treeform> it looks like he does a ton of stuff already |
07:38:24 | GitDisc | <treeform> Build and serve pkg docs |
07:39:10 | FromGitter | <survivorm> So, the continuous builds will be great addition |
07:39:42 | FromGitter | <survivorm> But, as with every good idea, someone need to make it work |
07:39:58 | FromGitter | <survivorm> even if as a prototype |
07:40:14 | FromGitter | <survivorm> then it may become community-driven |
07:55:53 | * | rokups joined #nim |
08:02:30 | * | Arrrr joined #nim |
08:10:43 | * | el_tejon quit (Quit: el_tejon) |
08:13:59 | Araq | nimble tries to play nice with OS package managers |
08:14:10 | Araq | so ideally a nimble package should say |
08:14:24 | Araq | "to finish the installation, run 'sudo apt-get foobar'" |
08:14:50 | Araq | we spent quite some effort in distros.nim to support this |
08:14:57 | Araq | people need to use the feature |
08:24:25 | livcd | package managers :( |
08:24:48 | FromGitter | <survivorm> First of all, i think people need to KNOW of it :) No offence. People are lazy, so if they're not reminded of something they tend to forget it |
08:26:07 | FromGitter | <survivorm> So if autobuid brakes because of something maintainers didn't supply and it's written in bright red in the last build's log details, people will surely remember :) |
08:31:03 | * | yglukhov joined #nim |
08:31:17 | livcd | packagae managers often break if you do not use them regularly |
08:32:07 | livcd | you have not done brew update && upgrade in a week ? Phuck you now you need to do this and this and this and wait for this other shit to compile for 50 minutes. |
08:32:42 | FromGitter | <survivorm> You're overrating this |
08:33:28 | FromGitter | <survivorm> E.g. in arch I don't upgrade for a month sometimes. And nothing bad happens |
08:33:49 | FromGitter | <survivorm> But, surely, problem exists |
08:34:15 | FromGitter | <survivorm> in particular, with cross-dependencies |
08:34:48 | livcd | I do not know about arch. Happens to me all the time with apt and brew |
08:35:32 | FromGitter | <survivorm> That's why i've gone from ubuntu |
08:36:24 | FromGitter | <survivorm> unstability in everyday tasks are a pain in the ass which you can tolerate only so far |
08:36:55 | Araq | I still don't believe in versioning :-) |
08:37:29 | FromGitter | <survivorm> But the point of my talk is not 'build everythere', it's more 'predictability' |
08:37:33 | Araq | it's just some number, to update, update and hope you have enough tests |
08:37:45 | Araq | if you don't, don't update :-) |
08:37:59 | Araq | bugfixes can break things too. |
08:38:00 | livcd | I prefer working instead of latest and greatest |
08:38:34 | FromGitter | <survivorm> So that you would know that in the environment 'A-...B' project is supposed to work |
08:38:34 | livcd | People like latest because it often fixed the issues they had. But it's like a bandaid to a bigger problem |
08:39:06 | Araq | survivorm: I've argued about this before, it's an intractable problem |
08:39:41 | Araq | library A works with B versions 1..4, B works with C versions 1..4, C with D versions 1..4 |
08:39:58 | livcd | eww |
08:40:08 | Araq | library A needs to test a configuration space with 4*4*4 instances |
08:40:36 | Araq | intractable, so instead you pin your dependencies |
08:40:58 | FromGitter | <survivorm> Of cause, 100% sure is a myth. But if you're at least 90% sure, that A works with B, C, D(version numbers), then that'll work |
08:41:17 | Araq | probabilities multiply too |
08:41:23 | FromGitter | <survivorm> @Araq that's what virtual environments are made for |
08:41:38 | Araq | 90% ^ n is not a good chance of having something that works |
08:42:01 | FromGitter | <survivorm> Of cause you're not to put all the dependencies at one place |
08:42:13 | FromGitter | <survivorm> and of cause they'll conflict |
08:42:31 | FromGitter | <survivorm> @Araq I mean 90% net |
08:42:35 | Araq | you can't argue against math :P |
08:42:40 | FromGitter | <survivorm> Not for each member |
08:43:08 | Araq | in Nim's case, most regressions are due to bugfixes. |
08:43:22 | FromGitter | <survivorm> Or every little thing in the world would brake, by your logic |
08:43:39 | Araq | Murphy's law :P |
08:44:12 | FromGitter | <survivorm> Murphy's law is only a special case :) |
08:44:28 | FromGitter | <survivorm> Worst case scenario |
08:44:54 | FromGitter | <survivorm> It happens, yes, but not as often as it's advertised |
08:45:13 | Araq | well in practice I have a ~50% chance my brew command works |
08:45:21 | FromGitter | <survivorm> It's just more rememberable :D |
08:45:35 | FromGitter | <survivorm> Poor soul :) |
08:45:52 | FromGitter | <survivorm> I rarely see my pacman command fails :P |
08:46:24 | FromGitter | <survivorm> That's more about quality of testing |
08:47:04 | FromGitter | <survivorm> But that's not the point |
08:47:04 | Araq | you need to test a combinatorial explosion |
08:47:13 | Araq | that is the point. |
08:47:37 | Araq | you will never get "quality" into this, IMO |
08:47:49 | Araq | only "good enough" ;-) |
08:48:51 | FromGitter | <survivorm> IIRC, Joel Spolsky said about little barriers for people. Barrier may seem small, but if you remove it, you may be surprised about how many new people will come through |
08:49:22 | FromGitter | <survivorm> And if you'll remove as many as you can, well... |
08:49:51 | FromGitter | <survivorm> that's the maths you like, @Araq |
08:50:21 | FromGitter | <survivorm> each barrier cuts a percent of otherwise interested people |
08:51:30 | Araq | yes, but a package manager that fails can be a bigger barrier than a configure script that I can hack into a working state |
08:52:04 | Araq | and there is little than I dislike more than configure scripts :-) |
08:52:37 | FromGitter | <survivorm> And why should it fail? |
08:52:57 | FromGitter | <survivorm> 'Cause of version conflict? |
08:53:05 | Araq | for example. |
08:53:26 | Araq | or a download fails. |
08:53:48 | Araq | or the package manager puts stuff into the wrong wrong directory |
08:53:52 | FromGitter | <survivorm> And just what can you do about failing download? |
08:54:23 | FromGitter | <survivorm> Version conflicts lead to virtual environments |
08:54:28 | Araq | or the package manager has a misguided notion of a "transaction" and rolls back useful work |
08:55:04 | FromGitter | <survivorm> I live with python's virtual env's for years. And almost no problems seen |
08:56:05 | FromGitter | <survivorm> Why our discussion drifted to PM's? I was talking on continuous build system |
08:56:08 | FromGitter | <survivorm> ? |
08:56:45 | Araq | were you? sorry |
08:57:20 | FromGitter | <survivorm> And, just btw, wrong paths are easily fixed by virtualenvs too |
08:57:38 | livcd | package managers fail all the time |
08:57:46 | livcd | (c) statistics pulled out of my ass |
08:58:18 | FromGitter | <survivorm> I was talking about idea of testing every nimble package then nim/or package is changed |
08:58:43 | FromGitter | <survivorm> And displaying test results somethere centralized |
08:58:49 | FromGitter | <survivorm> That's all |
09:00:17 | FromGitter | <mratsim> I hate Python’s virtualenv … I have to maintain one for Datascience on Python3, one on Python2 because university still didn’t get rid of it, one for blockchain … spare me already … reproducible builds? tough luck …. |
09:01:40 | livcd | brew is like the least likely to break and it still breaks if I do not use it frequently. At least it displays what it wants from you. Unless it does not and then you spend time with shit |
09:04:24 | FromGitter | <survivorm> @mratsim Any other idea? To maintain or not several versions is developer's choice, it's more about the ability to know if something fails |
09:04:49 | FromGitter | <survivorm> It would fail anyway! Just being concealed |
09:06:03 | FromGitter | <survivorm> Would you think it's better to invest time and money into some project relying on some software and eventually find out that your dependencies do not build? |
09:06:32 | FromGitter | <survivorm> Better be aware of it earlier |
09:12:32 | * | Arrrr quit (Ping timeout: 276 seconds) |
09:13:17 | Araq | "it would fail anyway" |
09:13:31 | Araq | as a programmer I can fix broken compilations |
09:13:39 | Araq | but I don't want to deal with |
09:13:57 | Araq | "dep A requires B version 1.0, dep C requires B version 2.0" |
09:14:32 | Araq | there are different "failure modes" |
09:15:00 | Araq | and the package manager is usually the least helpful at the topmost layer |
09:15:26 | FromGitter | <andreaferretti> @survivorm I agree that having a CI server continuosly build and test nimble packages would be tremendously useful |
09:15:38 | FromGitter | <andreaferretti> I tried to suggest this idea for a while |
09:15:52 | * | Arrrr joined #nim |
09:15:52 | * | Arrrr quit (Changing host) |
09:15:52 | * | Arrrr joined #nim |
09:15:53 | FromGitter | <andreaferretti> but in the end nothing come out of it |
09:16:01 | Araq | I like the idea too. somebody needs to *do* it though. |
09:16:21 | FromGitter | <mratsim> Would Digital Ocean sponsorship covers that? |
09:16:28 | FromGitter | <mratsim> cover* |
09:16:41 | FromGitter | <andreaferretti> the simplest way would be to open the CI servers to (a limited vetted set of) external developers |
09:16:50 | Araq | we can deploy any service we want to, I think |
09:16:54 | FromGitter | <andreaferretti> and create a template for a nimble project |
09:16:58 | Araq | not sure if we have CPU limitations |
09:17:25 | FromGitter | <andreaferretti> then developers could create jobs to test their own packages |
09:17:33 | FromGitter | <andreaferretti> this is open to abuse |
09:17:57 | FromGitter | <andreaferretti> but I think it could be tried with at least a few people |
09:20:27 | * | Vladar joined #nim |
09:24:52 | * | SenasOzys joined #nim |
09:27:36 | FromGitter | <survivorm> @andreaferretti i think it's great idea. But my idea was something other than that - automatically detect changes and re-build and re-test every affected nimble package on it |
09:27:56 | FromGitter | <survivorm> After a while - add platform-specific builds |
09:28:28 | FromGitter | <survivorm> I bet more than 50% packages will be "yellow" status at best |
09:29:17 | * | dddddd joined #nim |
09:29:31 | FromGitter | <survivorm> meaning red - not builds or all tests fail, yellow - some tests fail and green - all clean |
09:30:25 | FromGitter | <survivorm> Nim's virtue is that that operations may be done relatively fast |
09:31:32 | FromGitter | <survivorm> I don't know any other language which have a possibility to cover it's full ecosystem with automatical CI. Even if theoretically |
09:32:44 | FromGitter | <survivorm> And then, we may add "with predictable ecosystem" to Nim's slogan :) |
09:33:24 | Araq | it's very predictable already. |
09:33:49 | Araq | I always have to patch what I need to use. |
09:33:55 | Araq | :-) |
09:34:36 | Araq | my favourite are "assumes Unix environment" packages |
09:34:42 | FromGitter | <survivorm> You sound like a friend of mine |
09:36:31 | FromGitter | <survivorm> He was used to say - What do you not like about my program? It's almost working, you only need to fix a small thing there <he dives into program and fixes a single (or 2-3-5) line of code. Program works> |
09:37:34 | FromGitter | <survivorm> He was genuinely surprised, why so much people where eager to hang him on the nearest tree :D |
09:38:15 | * | yglukhov quit (Remote host closed the connection) |
09:38:26 | FromGitter | <andreaferretti> I confess I never tried my packages on windows :-) |
09:38:47 | FromGitter | <andreaferretti> on the other hand, some of them requires unix-specific libs |
09:39:21 | FromGitter | <andreaferretti> while others only use platform specific features via the nim stdlib, so in theory they should work on windows |
09:39:26 | FromGitter | <andreaferretti> at least, I hope so :-P |
09:40:30 | FromGitter | <andreaferretti> I settled for a bash script that I run daily after updating nim that tells me if any test fails |
09:41:13 | livcd | Why not nimscript?! |
09:41:14 | FromGitter | <survivorm> That's the point of CI, exactly :) |
09:41:50 | FromGitter | <andreaferretti> @livcd no particular reason, it was just a few lines of bash, I didn't overthink it |
09:42:40 | livcd | Whenever I see bash I puke a little in my mouth |
09:43:11 | FromGitter | <andreaferretti> yeah I agree |
09:43:22 | FromGitter | <andreaferretti> but it's just a loop that calls nimble test |
09:43:39 | FromGitter | <survivorm> @andreaferretti But the problem stands, @Araq is right. Somebody need to write a CI environment to make it work |
09:44:11 | FromGitter | <andreaferretti> there is a CI environment to test nim itself |
09:44:15 | * | arecacea1 quit (Remote host closed the connection) |
09:44:23 | FromGitter | <andreaferretti> I was suggesting to use that |
09:44:37 | * | arecacea1 joined #nim |
09:44:47 | * | yglukhov joined #nim |
09:44:56 | FromGitter | <survivorm> does it support virtualenvs? |
09:45:36 | FromGitter | <survivorm> Because if not than it would benefit noone with dependencies |
09:45:58 | FromGitter | <andreaferretti> well, nim dependencies are alreay isolated by nimble |
09:46:10 | FromGitter | <andreaferretti> for native dependencies, yeah there is a problem |
09:46:32 | FromGitter | <andreaferretti> but there are mantained docker images, those could be autogenerated and used |
09:47:13 | FromGitter | <survivorm> abot 700 docker-containers? I think it'll be an overkill |
09:47:43 | FromGitter | <survivorm> And each will need to be re-tested at each nim update |
09:47:48 | * | smt joined #nim |
09:48:02 | Araq | all we need is a github hook that triggers a rebuild of github.com/nim-lovers.git |
09:48:18 | FromGitter | <survivorm> and docker itself brings it's own 'perks' |
09:48:38 | Araq | and nim-lovers is just a github repo that is registered at appveyor and travis |
09:49:18 | Araq | and sends me an email when stuff breaks |
09:49:39 | FromGitter | <survivorm> @Araq you'll drown |
09:49:44 | FromGitter | <survivorm> in letters |
09:49:48 | Araq | huh? |
09:50:01 | Araq | no, only selected packages are tested |
09:50:12 | FromGitter | <survivorm> Ah, i see |
09:50:20 | Araq | people can create PRs to nim-lovers |
09:50:24 | federico3 | andreaferretti: this is what nimble.directory has been doing - given the limited hardware it's testing pkg install and "nim doc" but not running tests |
09:50:26 | Araq | if they want to add their packages for testing |
09:50:40 | FromGitter | <survivorm> but still, i think letters should come to project's maintainers |
09:50:56 | Araq | well the point is to detect compiler regressions |
09:51:11 | Araq | so the Nim core devs should take action |
09:51:40 | FromGitter | <survivorm> No, no, i think we have a misunderstanding there, @Araq |
09:51:52 | Araq | we can do that already with nim-lang but the tests run for too long already |
09:53:02 | federico3 | I also did pkg installs against Nim devel on ci.nim-lang.org but there was no interest in it |
09:53:08 | FromGitter | <survivorm> My point is that the projects shoud have the 'builds for ver ...' and 'tests pass for ver... ' badges, access to the last build's logs |
09:53:54 | FromGitter | <survivorm> @FedericoCeratto I think it's problem of marketting, most of all |
09:54:09 | FromGitter | <survivorm> If you have it already, it's great |
09:54:11 | FromGitter | <andreaferretti> @federico3 I have been saying this lots of time |
09:54:19 | FromGitter | <andreaferretti> doing nimble install is not useful at all |
09:54:34 | federico3 | survivorm: https://nimble.directory/pkg/jester the badges on the right side do that |
09:54:34 | FromGitter | <survivorm> We just need it's proper display |
09:54:43 | FromGitter | <andreaferretti> for instance, for all of my 12 or so packages |
09:54:53 | Araq | federico3, I had interest but the problems I looked at were 90% nimble configuration problems |
09:54:57 | FromGitter | <andreaferretti> nimble install will just clone the repo and copy files |
09:55:09 | federico3 | andreaferretti: "nim doc" is being run as well. I'd be more than happy to run tests if hardware was available |
09:55:18 | FromGitter | <andreaferretti> all failures I saw were just git failing due to network issues |
09:55:32 | Araq | "nim doc" doesn't really compile stuff |
09:55:40 | Araq | ah yeah, that too, andreaferretti |
09:55:54 | FromGitter | <andreaferretti> we need a way to actually run tests |
09:56:24 | FromGitter | <andreaferretti> I don't really want to sound negative but without doing that it's all wasted effort |
09:57:34 | FromGitter | <survivorm> @federico3 it's great. It just needs tests, and a list of "works against version" |
09:57:47 | federico3 | I'm aware "nim doc" is not running tests. (Yet I saw install and builds failing and helped me so far) |
09:58:08 | FromGitter | <survivorm> And be a little more visible, in a way of UI |
09:58:37 | federico3 | survivorm: I did experiments with running tests for many pkg against both Nim devel and released on CircleCI. One host is just too slow |
09:58:46 | FromGitter | <survivorm> I've not stumbled upon it untill i've looked for them in special |
09:59:08 | federico3 | I accept PRs and buildbots |
09:59:35 | FromGitter | <survivorm> @federico3 That may be the problem @Araq may probably help with |
10:00:05 | FromGitter | <survivorm> (one host problem, i mean) |
10:00:13 | Araq | actually dom96 is our infrastructure man |
10:00:40 | federico3 | I pinged dom96 few times in the past - the build infrastucture is not being resurrected so far |
10:00:46 | FromGitter | <survivorm> Than that's him ^) |
10:01:00 | Araq | that said, unless it sends me an email, it doesn't exist |
10:01:00 | * | yglukhov quit (Remote host closed the connection) |
10:01:25 | FromGitter | <survivorm> An email on what, exactly? |
10:01:46 | FromGitter | <survivorm> In what case? |
10:02:16 | federico3 | rebuilding all/many pkgs on every commit against Nim and spotting regressions |
10:02:30 | FromGitter | <survivorm> I think if something didn't build before, and not builds with the new nim, it shouldn't ne the case |
10:03:26 | FromGitter | <survivorm> But yes, if something did build and now it's not - that MAY be it |
10:04:27 | Araq | I've argued for this before but this "diff" technology is out of reach, so we start with all-green projects and keep them green |
10:04:38 | FromGitter | <survivorm> And the aggregation still stands, or @Araq will drown, as i've said before. If he'll get a 200 letters each time something goes wrong... |
10:05:10 | federico3 | Araq: out of reach? |
10:05:25 | FromGitter | <survivorm> @Araq just why? It's not so hard? |
10:06:08 | Araq | dunno, people in #nim couldn't imagine it back then |
10:06:18 | FromGitter | <survivorm> Just keep a package -> version -> nim version -> build state in some external store fo CI |
10:06:36 | FromGitter | <survivorm> And a little logic on it |
10:07:20 | FromGitter | <survivorm> It not so much data, even for 700 packages :) |
10:07:27 | Araq | anyway, I won't drown in emails, I will get a single one that says "now packages X, Y fail" |
10:07:53 | FromGitter | <survivorm> As i've said - aggregation |
10:08:08 | Araq | that's what travis and appveyor do out of the box |
10:09:36 | federico3 | survivorm: I already have this simple logic implemented actually |
10:10:18 | FromGitter | <survivorm> That means we think similarly on some topics :) |
10:10:57 | FromGitter | <survivorm> And that's great, of cause |
10:11:18 | FromGitter | <survivorm> The thing remaining is mailing? |
10:11:41 | federico3 | the big blocker is hardware... |
10:12:03 | FromGitter | <survivorm> let's ping @dom96 |
10:12:19 | FromGitter | <survivorm> May be he have a say in that |
10:12:35 | Araq | what would it take to run a builder? |
10:12:49 | FromGitter | <survivorm> If many people will vouch for it, it's more likely to happen |
10:12:50 | * | jaco60 joined #nim |
10:13:40 | federico3 | Araq: in terms of CPU power? |
10:13:48 | Araq | no, required software |
10:14:55 | federico3 | not much really |
10:16:20 | Araq | Python based buildbot? |
10:16:46 | Araq | why did we abandon nimbuild :-/ was my favourite |
10:17:27 | federico3 | both nimble.directory and nim-ci have code to update and build Nim and install and tests pkgs |
10:18:13 | federico3 | something to trigger remote builds and report outputs would be quite simple |
10:25:53 | * | Pisuke quit (Ping timeout: 240 seconds) |
10:25:55 | * | Sembei joined #nim |
10:46:09 | * | floppydh joined #nim |
11:06:57 | FromGitter | <alehander42> I think that's unfeasible for *all* nimble libs |
11:07:18 | FromGitter | <alehander42> but it might be feasible for e.g. top <N> nimble libs on a small set of platforms |
11:07:38 | FromGitter | <alehander42> (I don't know if there are any stats in nimble on downloads etc, that would be useful) |
11:17:15 | dom96 | The problem is that most nimble packages don't have tests |
11:17:35 | FromGitter | <andreaferretti> is that true? |
11:17:39 | dom96 | I suppose compiling all .nim files is good enough though |
11:18:08 | FromGitter | <andreaferretti> most libs i have seen have some kind of test |
11:18:20 | FromGitter | <andreaferretti> even if it's just some asserts behind when isMainModule |
11:18:37 | dom96 | They don't have "proper" tests |
11:18:42 | dom96 | ones that work via 'nimble test' |
11:18:46 | FromGitter | <andreaferretti> The problem is that *how* to test depends from library to library |
11:18:50 | federico3 | it's still a lot of material to test |
11:19:19 | FromGitter | <andreaferretti> hence I think it makes sense to *not* do this automatically |
11:19:28 | FromGitter | <andreaferretti> require authors to submit a package for CI |
11:19:31 | dom96 | Doing it once a day or even once a week shouldn't be a problem |
11:19:33 | FromGitter | <andreaferretti> whereby they specify |
11:19:38 | FromGitter | <andreaferretti> 1) how to run tests |
11:19:48 | FromGitter | <andreaferretti> 1) who to mail when something goes wrong |
11:20:02 | dom96 | we already have a standardised way to run tests |
11:20:07 | dom96 | packages just need to fall in line :P |
11:20:09 | federico3 | andreaferretti: this *was* using CircleCI to do that: https://github.com/FedericoCeratto/nim-ci |
11:20:53 | federico3 | dom96: the standardised way does not define what kind of tests can be run. "nimble test" could run integration tests |
11:22:59 | FromGitter | <andreaferretti> @federico3 I don't understand what do you mean |
11:23:18 | FromGitter | <andreaferretti> Do you mean that that project was requiring package authors to register? |
11:28:16 | federico3 | no, it was doing automated builds against Devel but on CircleCi |
11:29:10 | dom96 | federico3: yeah, I should probably clarify that in the readme |
11:29:23 | federico3 | but a free CI env is way too limiting for this use case |
11:29:36 | Yardanico | federico3, we can use multiple CIs at the same time :D |
11:29:56 | Yardanico | E.g. travis, circleci, semaphoreci (latter is faster than others btw) :P |
11:31:57 | federico3 | Yardanico: maintaining that is very time consuming and you cannot safely run tests for 3rd partiy library - hence nimble.directory runs on dedicated hw |
11:32:07 | Yardanico | well I know that :( |
11:33:23 | federico3 | dom96: any hope to resurrect the buildbots? Testing against multiple OSes would be a nice added benefit |
11:35:09 | * | natrys joined #nim |
11:37:22 | dom96 | which build bots? |
11:37:35 | * | vlad1777d_ joined #nim |
11:37:39 | dom96 | brb |
11:41:28 | Yardanico | dom96, nim buildbots? :) |
11:52:30 | dom96 | again, which ones |
11:52:39 | dom96 | We had many different implementations |
11:52:49 | Araq | nimbuild |
11:53:33 | * | tongir quit (Ping timeout: 240 seconds) |
11:53:38 | dom96 | I was considering reviving Nimbuild as a commercial project |
11:54:04 | Araq | commercial? why? what's its selling point? |
11:56:42 | Araq | nimbuild still compiles btw |
11:56:51 | Araq | well I had to make 3 changes to builder.nim |
11:57:08 | Araq | but then it compiles with tons of deprecation warnings :-) |
11:58:05 | * | vlad1777d_ quit (Ping timeout: 240 seconds) |
12:00:04 | dom96 | I have some ideas :P |
12:00:39 | dom96 | if there is no selling point then why don't you use the python buildbot? :P |
12:01:12 | Araq | because I'm egocentric |
12:02:25 | federico3 | dom96: any other build system would do as long as we have some hw (possibly with different OSes) to run tests. |
12:02:48 | * | Snircle joined #nim |
12:03:42 | dom96 | we've got the GCC build farm at our disposal, but I don't think we can abuse it for this |
12:05:45 | Yardanico | dom96, wow, I didn't know about this D: |
12:05:50 | Yardanico | :D how did that happen? |
12:06:48 | dom96 | You can just request access |
12:06:58 | dom96 | and they give it to FOSS projects |
12:07:42 | Yardanico | wait, so it can be used like a usual CI service? |
12:08:22 | dom96 | you get ssh access to the machines |
12:08:56 | * | SenasOzys quit (Ping timeout: 268 seconds) |
12:12:32 | federico3 | I also have access to the Debian build fleet with few more architectures but it's not meant for our use case |
12:16:51 | * | yglukhov joined #nim |
12:18:32 | federico3 | dom96: is the hardware from nimbuild still around? |
12:18:45 | dom96 | it was the gcc farm |
12:19:04 | * | SenasOzys joined #nim |
12:20:05 | federico3 | anyone volunteering some hw? andreaferretti , survivorm ? Or perhaps D.O. can provide some? |
12:33:11 | * | yglukhov quit (Remote host closed the connection) |
12:37:52 | dom96 | Do we have the software necessary to make use of the hardware? |
12:41:26 | * | athenot joined #nim |
12:44:15 | FromGitter | <andreaferretti> I don't think I will be able to provide hardware |
12:44:57 | FromGitter | <andreaferretti> but I think hardware is not the problem |
12:45:38 | FromGitter | <andreaferretti> the problem is an actual application that lets user register, provide contact information, list dependencies, list which os/archs are supported, and tell how to run tests |
12:46:00 | * | endragor quit (Remote host closed the connection) |
12:46:12 | FromGitter | <andreaferretti> the idea of doing all of this in automated way is severely limited |
12:46:28 | * | endragor joined #nim |
12:47:46 | Yardanico | ando also it'll be better to let some trusted users add any nim libraries into this buildfarm |
12:49:14 | Araq | andreaferretti: that's just a pullrequest |
12:49:22 | Araq | to some repo we need to setup |
12:49:37 | Araq | configuration can be done via NimScript, JSON, .travis hacking |
12:49:45 | Araq | it doesn't matter |
12:49:57 | dom96 | What is important is presentation |
12:50:04 | dom96 | Travis is slow |
12:50:20 | dom96 | and I don't want to click/scroll through tens of pages to find whether some package succeeded |
12:50:37 | FromGitter | <andreaferretti> it is not just a pull request |
12:50:48 | FromGitter | <andreaferretti> does the current CI application even have a DB? |
12:51:03 | Araq | you're overthinking this |
12:51:25 | FromGitter | <andreaferretti> maybe |
12:51:28 | * | fvs joined #nim |
12:52:19 | federico3 | dom96: yes, both the nimble directory and the previous nim-ci can orchestrate that and collect output & so on |
12:54:39 | Araq | well first we need to decide what to test. do we test for Nim regressions or the quality of a Nimble package? |
12:55:45 | Araq | these are not the same things. :-) |
12:55:54 | federico3 | once the test for a pkg are being run we can both give feedback to pkg users/devs and also use *some* flagged packages as a Nim regression test |
12:57:32 | dom96 | IMO Nim's travis should just test some nimble packages |
12:57:41 | dom96 | as it currently does |
12:58:12 | dom96 | Having a diff of all packages that broke between versions would be useful |
12:58:44 | FromGitter | <andreaferretti> does it? |
12:59:06 | FromGitter | <andreaferretti> I just checked nim travis file and it only does nimble install of some packages |
12:59:07 | federico3 | that's what nim-ci was doing using CircleCi because that CI service serves build artifacts |
12:59:19 | FromGitter | <andreaferretti> (veey few of them) |
12:59:37 | federico3 | but it's too restrictive and fiddly |
13:00:14 | Araq | dom96, travis is too slow already though |
13:00:30 | federico3 | instead with dedicated hw we could even test against different OS in a consistent manner |
13:01:08 | dom96 | Araq: Anyway, when are we releasing? |
13:01:20 | Araq | most packages are hardly portable, you can't test against different OSes in a consistent manner in any meaningful way, IMHO |
13:01:30 | FromGitter | <andreaferretti> many are |
13:01:56 | FromGitter | <andreaferretti> possibly the majority |
13:02:08 | Araq | my view is probably biased as I don't look at computational stuff, only IO/network related things |
13:02:14 | federico3 | Araq: I'm not saying all packages must work on all OSes |
13:02:39 | FromGitter | <andreaferretti> even IO related things may be portable if they build on the stdlib |
13:02:40 | federico3 | only the ones that are flagged as reliable on a given OS could trigger a regression alert |
13:02:41 | Araq | dom96, all bugs have been fixed, I think |
13:02:51 | dom96 | https://travis-ci.org/nim-lang/Nim/jobs/345946710#L4061 *sigh* |
13:03:11 | dom96 | I guess you can take a risk and merge https://github.com/nim-lang/Nim/pull/7229 |
13:03:21 | dom96 | There are still PRs we have to merge before release |
13:03:40 | Araq | dom96, that one is too risky |
13:03:53 | Araq | can't merge that for the release |
13:04:14 | Yardanico | PASS: ttables2.nim C (714.23207784 secs) is that ok? |
13:04:25 | Yardanico | ttables2 took 714 seconds on travis ci to pass |
13:04:29 | dom96 | lol, that sounds like a problem |
13:04:49 | Yardanico | or PASS: tfrexp1.nim JS (249.62910891 secs) |
13:05:13 | dom96 | see, a CI system should be able to pick those things out |
13:05:24 | dom96 | travis is so stupid it makes me want to write my own innovative solution |
13:05:25 | Yardanico | PASS: tdeepcopy.nim C (463.38030910 secs) |
13:05:44 | Yardanico | maybe travis build bots were overloaded? |
13:06:38 | dom96 | possible |
13:16:13 | * | athenot_ joined #nim |
13:16:17 | * | athenot quit (Ping timeout: 276 seconds) |
13:16:45 | Araq | PASS: tdeepcopy.nim C (7.93710828 secs) |
13:16:57 | Araq | PASS: ttables2.nim C (11.71816730 secs) |
13:17:01 | Araq | on my machine |
13:17:06 | Araq | so yeah, these are slow tests |
13:17:12 | Araq | but don't take minutes |
13:19:37 | * | Vladar quit (Remote host closed the connection) |
13:19:59 | * | yglukhov joined #nim |
13:20:06 | * | sz0 joined #nim |
13:24:39 | * | floppydh quit (Ping timeout: 260 seconds) |
13:32:29 | * | endragor quit (Remote host closed the connection) |
13:32:56 | * | endragor joined #nim |
13:34:29 | FromGitter | <alehander42> yeah, I've always secretly wanted to rewrite travis, but these days honestly building periodically some docker images and executing simpler command on top of them seems simpler to me |
13:35:15 | * | floppydh joined #nim |
13:39:26 | * | endragor quit (Remote host closed the connection) |
13:39:56 | * | endragor joined #nim |
13:47:17 | Araq | mratsim: https://github.com/nim-lang/Nim/pull/7265 will this help arraymancer? you might be able to not use any 'when's at all |
13:49:06 | * | Arrrr quit (Ping timeout: 256 seconds) |
13:54:31 | FromGitter | <Varriount> Araq: Why is `BackwardsIndex` its own type? |
13:56:16 | FromGitter | <mratsim> @Araq yes, I reviewed it on IRC yesterday ;) |
13:56:57 | FromGitter | <mratsim> @Varriount I think the distinct type is imported so that the compiler throws an error to authors that didn’t adapt |
13:57:02 | FromGitter | <mratsim> important* |
13:59:27 | Araq | so ... what are your conclusions? |
14:08:07 | FromGitter | <krux02> Araq: I am writing a doc string for "writeFloatToBuffer", because I think it needs one. |
14:09:01 | FromGitter | <krux02> should I use lines like this: `## :param buf: description` ? |
14:11:39 | dom96 | no |
14:12:07 | dom96 | You should write a nicely formatted rst list: |
14:12:14 | dom96 | ## The parameters are: |
14:12:15 | dom96 | ## |
14:12:22 | dom96 | ## * ``buf`` - description |
14:12:31 | dom96 | For now at least, until we get a proper format for this |
14:12:31 | Araq | you shouldn't write a doc comment for this proc ;-) |
14:12:40 | Araq | it's not exported, I hope. |
14:13:07 | Araq | ## returns the number of written bytes. |
14:13:24 | Araq | something like that maybe since the return value is the only thing that is ambiguous |
14:15:31 | FromGitter | <krux02> I don't export it, and when it is exported I hope it get's a better name. But I would like to write a comment on it, because I think it is important enough to be commented. |
14:15:50 | Araq | so write about the non-obvious parts |
14:16:07 | Araq | I don't need comments that translate Nim's syntax into English. |
14:16:36 | Araq | and :param: is a bad idea because inevitably it leads to |
14:16:45 | Araq | :param foo: the Foo. |
14:17:38 | dom96 | "The writeFloatToBuffer proc" |
14:17:41 | dom96 | :P |
14:17:45 | FromGitter | <survivorm> @Araq that is often made for auto doc generation |
14:18:23 | FromGitter | <survivorm> And explanation is there only if param's meaning isn't obvious |
14:18:45 | Araq | I've seen enough Java documentation to disagree. |
14:26:34 | FromGitter | <krux02> Araq: There is a line to check for characters: `elif buf[i] in {'a'..'z', 'A'..'Z', '.'}: hasDot = true`, when is that true? |
14:27:15 | FromGitter | <krux02> ah, I got it, it is for exponential format |
14:29:31 | * | floppydh quit (Quit: WeeChat 2.0.1) |
14:36:19 | * | natrys quit (Quit: natrys) |
14:37:09 | FromGitter | <survivorm> @Araq what about python docs? The style is the same, but the docs are usually much better |
14:38:16 | Araq | I don't like them too much, the docs are usually verbose and missing the point |
14:38:48 | FromGitter | <zetashift> I nominate hexdocs! https://hexdocs.pm/elixir/Kernel.html |
14:39:02 | Araq | https://pyformat.info/ only exists because of Python's weak docs |
14:39:14 | Araq | ok, that is only about string formatting, but still. |
14:40:21 | Araq | the most important thing are examples. |
14:40:45 | Araq | examples are not one way of learning things. they are the only way. |
14:41:06 | Araq | and :param: by definition cannot be about examples. |
14:41:22 | dom96 | well organised examples are good |
14:41:45 | dom96 | ironically the strformat module exposes a hell of a lot of lines as "examples" |
14:42:14 | dom96 | I should just fix it myself of course |
14:43:13 | Araq | don't you dare touch my work of art. |
14:43:23 | * | floppydh joined #nim |
14:45:53 | livcd | Now I realized...how should I update nim to 0.17.3 ? :-| |
14:46:26 | FromGitter | <mratsim> @Araq I like @krux02 PR, it’s much cleaner. I think containers with a length should be a concept too. (Iterable? Unless we may have infinite iterable) |
14:46:31 | FromGitter | <survivorm> @Araq plain examples are usually not enough. One of the best docs in my book is http://docs.sqlalchemy.org |
14:47:09 | FromGitter | <survivorm> It contains a lot of examples, yes, but also much theory behind them |
14:47:19 | FromGitter | <survivorm> EXPLANATIONS |
14:47:59 | FromGitter | <survivorm> And API reference is always good too, in some cases invaluable. And there you need params explanation |
14:48:06 | FromGitter | <mratsim> @survivorm it really depends on your public, see: https://www.divio.com/en/blog/documentation/ |
14:49:27 | FromGitter | <mratsim> 4 axes: tutorials / how-to / Explanation / Reference. All with a different audience in mind |
14:49:30 | FromGitter | <survivorm> Yeah, @mratsim it's right. So, examples are only one of many |
14:49:48 | FromGitter | <mratsim> yes examples only covers the how-to |
14:49:55 | FromGitter | <survivorm> they drift to how-to, althought limited |
14:50:20 | FromGitter | <survivorm> because how-t's should cover *scenarios* |
14:50:37 | FromGitter | <mratsim> indeed |
14:50:39 | FromGitter | <survivorm> Which is rare for examples |
14:51:09 | * | endragor quit (Remote host closed the connection) |
14:53:07 | * | endragor_ joined #nim |
14:54:35 | Araq | survivorm: when I look at http://docs.sqlalchemy.org/en/latest/core/tutorial.html I only read the example code... |
14:55:09 | * | athenot joined #nim |
14:55:23 | FromGitter | <survivorm> @Araq http://docs.sqlalchemy.org/en/latest/core/sqlelement.html |
14:55:33 | FromGitter | <survivorm> then look here, for example |
14:55:37 | Araq | and when I read some wall of text I often translate it in my head into more concrete examples |
14:55:52 | FromGitter | <andreaferretti> that is just your personal approach |
14:56:01 | FromGitter | <survivorm> That's your own mind work |
14:56:10 | FromGitter | <survivorm> not everyone do the same |
14:56:10 | FromGitter | <andreaferretti> there are many people who actually like to read text and explanation |
14:56:18 | FromGitter | <survivorm> +1 |
14:56:27 | * | athenot_ quit (Ping timeout: 245 seconds) |
14:57:49 | * | endragor_ quit (Ping timeout: 252 seconds) |
14:59:09 | * | gsingh93 quit (Quit: ZNC - http://znc.in) |
15:00:56 | Araq | whatever, I stand by my words and Python's parameter descriptions are for the lack of static typing |
15:01:55 | Araq | you might as well argue to annotate the list of possible exceptions in prosa |
15:02:13 | Araq | manually. |
15:03:24 | * | yglukhov quit (Remote host closed the connection) |
15:05:10 | FromGitter | <andreaferretti> there are various things in documentation |
15:05:12 | Araq | remove the examples from SQLAlchemy's docs and see how worse it becomes. Remove the prosa instead and it makes little to no difference. |
15:05:15 | * | endragor joined #nim |
15:06:19 | FromGitter | <andreaferretti> in that particular case you may be right |
15:06:25 | FromGitter | <andreaferretti> now try the same exercise here https://github.com/unicredit/cello |
15:06:54 | FromGitter | <andreaferretti> I don't think the examples even make sense without the links to the literature |
15:07:05 | FromGitter | <andreaferretti> different libraries have different requirements |
15:08:32 | * | r3d9u11 joined #nim |
15:08:46 | * | endragor quit (Remote host closed the connection) |
15:10:06 | * | endragor joined #nim |
15:11:29 | * | MJCaley joined #nim |
15:11:39 | Araq | "For bit sequences, rank(i) counts the number of 1 bits in the first i places. " |
15:11:49 | Araq | let x = { 13..27, 35..80 } |
15:11:49 | Araq | echo x.rank(16) # 3 |
15:12:02 | Araq | can't say I understand it :-) |
15:12:35 | Araq | maybe you need more examples :P (or an easier to follow visualization) |
15:12:59 | FromGitter | <andreaferretti> yeah, not saying it is very well written |
15:13:13 | FromGitter | <andreaferretti> just that the code without explanation will not make much sense |
15:13:53 | Araq | one problem here is that a set in math does not have an order |
15:14:03 | Araq | you talk about the first 'i places' |
15:14:09 | Araq | and then about sets |
15:14:14 | FromGitter | <andreaferretti> an integer set is just a bit sequence |
15:14:29 | Araq | I know, I implemented them. |
15:14:30 | FromGitter | <andreaferretti> in this case 000000000000011111111.... |
15:14:45 | FromGitter | <andreaferretti> to the left of position 16 there are 3 ones |
15:15:03 | Araq | yeah, bitstrings here would make it much more obvious |
15:15:08 | FromGitter | <andreaferretti> that's all that there's to it |
15:15:37 | Araq | yes but without the bit strings I'm essentially in the mode "ok, whatever, it's probably true" |
15:16:19 | FromGitter | <andreaferretti> I will update the docs to actually show the bitstrings |
15:16:36 | FromGitter | <andreaferretti> Anyway the point was that without the prose the code itself does not make much sense |
15:16:48 | FromGitter | <andreaferretti> Especially the data structures that come later |
15:17:04 | Araq | let x = "ABRACADABRA" |
15:17:04 | Araq | echo x.rank('A', 8) # 4 |
15:17:18 | Araq | ^ that one is much easier to follow |
15:17:37 | Araq | but you could instead write |
15:17:50 | Araq | let x = "ABRACADA|BRA" |
15:17:52 | FromGitter | <andreaferretti> thank you for the feedback, I will try to improve the docs |
15:20:07 | Araq | let x = "ABRACADA|BRA" |
15:20:07 | Araq | # ^ 8th position |
15:20:07 | Araq | assert x.rank('A', 8) == 4 # 4 instances of 'A' |
15:20:34 | Araq | see? only an example required to explain 'rank' :P |
15:20:53 | Araq | but hey, keep the prosa, it's fine. |
15:25:24 | * | yglukhov joined #nim |
15:28:30 | * | floppydh_ joined #nim |
15:28:41 | * | floppydh quit (Quit: WeeChat 2.0.1) |
15:37:57 | * | r3d9u11 quit (Remote host closed the connection) |
15:41:10 | FromGitter | <alehander42> I agree that examples are a bit more important ( I hate when there is a huge list of methods/api with no examples: examples can showcase *recommended* usage & pitfalls succintly.) Still explanations are also good to have for non-obvious srtuff |
15:42:54 | * | PMunch quit (Quit: Leaving) |
15:44:24 | FromGitter | <mratsim> I absolutely hate reading doxygen docs for that matter |
15:46:17 | FromGitter | <alehander42> of course ⏎ ⏎ ```code paste, see link``` ⏎ ⏎ works :D I've created macros for nothing [https://gitter.im/nim-lang/Nim?at=5a957d49758c233504c83d52] |
15:48:45 | * | yglukhov quit (Remote host closed the connection) |
16:08:45 | * | endragor quit (Remote host closed the connection) |
16:10:10 | * | floppydh_ quit (Quit: WeeChat 2.0.1) |
16:12:17 | FromGitter | <krux02> I absolutely hat reading doxygen docs for various reasons. Most importantly the generated document is very hard do navigate. |
16:16:55 | * | yglukhov joined #nim |
16:17:54 | * | Trustable joined #nim |
16:22:42 | * | SenasOzys quit (Ping timeout: 245 seconds) |
16:30:18 | * | SenasOzys joined #nim |
16:35:48 | FromGitter | <Bennyelg> I vote for examples! without them I am nothing :) i hate to read too much docs without getting the point. easy to me understand an example and than see some doc |
16:38:05 | GitDisc | <treeform> Hey dom96, some thing is wrong with nimble or this package, not sure which? |
16:38:06 | GitDisc | <treeform> https://gist.github.com/treeform/3c3f36b9662cd926a7990c9115c41a75 |
16:38:27 | GitDisc | <treeform> https://github.com/watzon/github-api-nim |
16:38:44 | GitDisc | <treeform> it says client.nim should be moved, but its already in the right dir? |
16:39:04 | dom96 | https://github.com/watzon/github-api-nim/blob/master/github_api.nimble#L8 |
16:39:08 | dom96 | Not with that 'srcDir' |
16:39:48 | GitDisc | <treeform> I still don't get it. |
16:40:06 | GitDisc | <treeform> so he should just remove that so that src dir is the pkg root? |
16:40:09 | dom96 | yes |
16:40:33 | dom96 | Nimble installs everything in the 'srcDir' |
16:40:45 | dom96 | and by default that's wherever the .nimble file is |
16:41:15 | GitDisc | <treeform> but you can move it inside |
16:41:19 | GitDisc | <treeform> did not know thanks! |
16:41:20 | GitDisc | <treeform> it was confusing me |
16:41:44 | GitDisc | <treeform> i am downloading all nimble packages and checking them for errors. |
16:41:51 | GitDisc | <treeform> it looks like good 50% of them have errors |
16:41:55 | dom96 | oh cool |
16:42:08 | GitDisc | <treeform> i want to open PRs with the authors to fix them |
16:42:16 | dom96 | brilliant |
16:42:30 | GitDisc | <treeform> but I need to know how 😦 |
16:42:45 | dom96 | The ideal structure is a 'src' directory |
16:42:55 | dom96 | and then 'srcDir = "src"' |
16:43:11 | GitDisc | <treeform> but then can you have multiple files there? |
16:43:23 | dom96 | Then you need a 'pkgName' directory |
16:43:26 | dom96 | inside that |
16:43:35 | GitDisc | <treeform> hmm no one is doing that |
16:43:53 | GitDisc | <treeform> well sorry, i have not seen that yet |
16:43:57 | GitDisc | <treeform> some people are probalby are |
16:44:08 | dom96 | it's not a requirement |
16:44:20 | dom96 | it just adds some nice separation |
16:47:37 | dom96 | Here is a new package that almost gets it right: https://github.com/emekoi/suffer/tree/master/src/private |
16:47:45 | dom96 | this directory should also be in a 'suffer' dir |
16:47:52 | dom96 | even though it only contains .c files |
16:48:00 | GitDisc | <treeform> why private? |
16:48:03 | dom96 | That's something that I should get Nimble to verify too |
16:48:15 | dom96 | 'private' by contention means "package-local" |
16:48:26 | dom96 | *convention |
16:48:36 | GitDisc | <treeform> i mean its odd that you have to skip it: `skipDirs = @["docs", "private", "example"]` |
16:49:08 | dom96 | oh, I didn't realise it was skipped |
16:49:26 | GitDisc | <treeform> dom96 what are your thoughts on including dlls in the nim packages too? |
16:49:43 | GitDisc | <treeform> its seems to hard to reproduce builds that wrap c libs? |
16:50:08 | GitDisc | <treeform> mainly because package managers on windows are not good. |
16:50:26 | dom96 | I think chocolatey should be used |
16:50:39 | GitDisc | <treeform> but it does not have stuff |
16:50:49 | dom96 | so add the DLL to chocolatey :P |
16:50:55 | GitDisc | <treeform> like cairo.dll for example spend a long time looking for it |
16:51:25 | GitDisc | <treeform> i also chocolatey is trying to be more like an app installer rather then dll finder... |
16:51:27 | dom96 | I don't want Nimble to care about DLLs |
16:51:39 | dom96 | But I do plan to offer ways to extend Nimble to add such functionality |
16:52:09 | dom96 | maybe it's time someone wrote a DLL package manager for Windows |
16:52:17 | GitDisc | <treeform> if dlls are not included its hard to be reproducible builds, less so with .so files but it still happens. |
16:52:26 | FromGitter | <krux02> I once wrote a wrapper, where I just instructed the compiler to compile the C files, too. |
16:52:32 | GitDisc | <treeform> if dlls are not included its hard to have reproducible builds, less so with .so files but it still happens. |
16:53:06 | GitDisc | <treeform> krux02, what if you are using mingw but the C files require VC++ of a specific version? |
16:53:09 | FromGitter | <krux02> it worked quite fine, but it only works for small projects you want to wrap, because you basically have to express the entire build of the C library with compile commands. |
16:53:29 | FromGitter | <krux02> then the C files will fail to compile |
16:53:56 | FromGitter | <krux02> but I don't concider C files that require VC++ of a specific version as a C file |
16:54:35 | FromGitter | <krux02> it's only a C file when it is compiliant with the standard. |
16:55:19 | GitDisc | <treeform> dom96, i have opend a PR with that pkg: https://github.com/watzon/github-api-nim/pull/1 |
16:55:39 | GitDisc | <treeform> I hope they fix it. I will try to go through everypackage |
16:55:50 | GitDisc | <treeform> what about like "nake" and "bable" files? |
16:55:58 | dom96 | babel -> nimble |
16:56:00 | dom96 | Just rename it |
16:56:25 | dom96 | You can keep the old ini-style nimble files too |
16:56:28 | dom96 | it's not that important |
16:56:30 | GitDisc | <treeform> i though it slightly different format? |
16:56:57 | dom96 | yeah, there are two formats, but that's not a babel/nimble distinction |
16:57:05 | dom96 | the new nimble name was adopted much before that |
17:00:15 | GitDisc | <ethanpmorgan> Book arrived. Time to sit down and have a good read |
17:01:05 | GitDisc | <treeform> dom96, another thing I see, people have tests, but then don't define nimble test task... so nimble test does not work. |
17:01:27 | dom96 | 'test' is defined by Nimble if it doesn't exist |
17:02:45 | * | douglascorrea joined #nim |
17:04:21 | GitDisc | <treeform> i guess I would like to run the test, but they don't define how? |
17:05:57 | GitDisc | <treeform> what should I tell this guy to fix his: https://github.com/Krognol/discordnim |
17:06:07 | GitDisc | <treeform> should I tell him to rename src to discrodnim |
17:06:18 | GitDisc | <treeform> or tell him to move everything to src? |
17:06:28 | dom96 | srcDir = "src" |
17:06:35 | GitDisc | <treeform> but then move all the files? |
17:06:37 | dom96 | and move all files into `discordnim` dir |
17:06:50 | dom96 | except the main file 'discord.nim' could be called 'discordnim.nim' |
17:06:58 | dom96 | (discordnim is a bad name) |
17:07:11 | dom96 | oh, he already has a discordnim.nim |
17:07:13 | GitDisc | <treeform> for a lib? |
17:07:19 | dom96 | and his nimble file is named 'discord'... |
17:07:48 | dom96 | and he copied websockets into his repo |
17:07:48 | GitDisc | <treeform> yeah tons of issues |
17:08:06 | GitDisc | <treeform> which kind of sux |
17:08:25 | GitDisc | <treeform> hmm |
17:09:20 | * | yglukhov quit (Remote host closed the connection) |
17:10:51 | GitDisc | <treeform> i wish nims package structure was simpler so less people would get it wrong... hmm |
17:11:22 | GitDisc | <treeform> is this because package structure hasswitched? |
17:11:26 | GitDisc | <treeform> is this because package structure has switched? |
17:11:53 | dom96 | no, it's because I added a warning to enforce it |
17:11:56 | dom96 | because nobody reads docs |
17:12:41 | GitDisc | <treeform> thats true! |
17:12:56 | Araq | yeah that package structure... |
17:13:15 | Araq | we can't get it right :-( |
17:13:42 | GitDisc | <treeform> finally a package that defines everything correctly and has tests! |
17:13:48 | GitDisc | <treeform> oh wait its 'nimble' |
17:15:50 | GitDisc | <treeform> is the default download method "git" or I should not assume that? |
17:16:51 | GitDisc | <treeform> never mind it looks like everything has a method defined |
17:22:21 | dom96 | I think we did do some small adjustments so you may find some of my own packages giving warnings :P |
17:27:22 | dom96 | Ideas on how we can alleviate this as always are welcome |
17:28:28 | FromGitter | <krux02> Araq: do you have any idea why why this could fail my commit changes: `let lst = lc[$x | (x <- 'a'..'z'), string].asList`? |
17:28:43 | FromGitter | <krux02> well I analyze it now |
17:29:10 | * | Jesin quit (Quit: Leaving) |
17:29:48 | GitDisc | <treeform> dom96, my idea was have win, linux and mac, constantly download update and checking all pacakges |
17:29:56 | GitDisc | <treeform> and annoying people with errors, test fails and warnings. |
17:30:40 | dom96 | sure, we should do that |
17:30:50 | GitDisc | <treeform> well I am just doing that right now |
17:34:21 | * | r3d9u11 joined #nim |
17:34:53 | * | Jesin joined #nim |
17:35:53 | dom96 | yeah, but you're doing it manually, right? |
17:36:06 | dom96 | Some software that does it automatically would be nice |
17:37:39 | GitDisc | <treeform> yeah I have to figure out what to do first. Then do this more automatically. |
17:37:43 | FromGitter | <krux02> well I see, for some reason the overloading rules decide to use the `[]` template from system that has an untyped first parameter, even though the list comprehension should match here |
17:37:43 | GitDisc | <treeform> |
17:37:43 | GitDisc | <treeform> https://cdn.discordapp.com/attachments/371759389889003532/418099393137475594/unknown.png |
17:37:56 | GitDisc | <treeform> every nimble pacakge |
17:38:26 | federico3 | treeform: you mean trying to install a nimble package and show if it fails? |
17:38:42 | FromGitter | <krux02> this list comprehension feature in macros really looks a lot like: "I want to be python and I will abuse anything I can to make it look like python" |
17:38:46 | GitDisc | <treeform> no i am sure the install works? |
17:39:00 | GitDisc | <treeform> i am downloading every package and running its tests |
17:39:21 | Yardanico | treeform: I did the same yesterday |
17:39:26 | Yardanico | But I cloned git repos with --depth 1 :) |
17:39:33 | Araq | krux02: can you use 'typed' for your [] instead? |
17:39:33 | GitDisc | <treeform> but most packages have no tests (or have tests but not a rule for them in nimble) or just broken |
17:39:47 | GitDisc | <treeform> Yardanico, oh good idea |
17:39:51 | FromGitter | <krux02> well yes I think I can |
17:40:17 | federico3 | treeform: if you have hardware to run tests on windows, nimble directory is doing part of it e.g. https://nimble.directory/pkg/jester |
17:41:11 | GitDisc | <treeform> hg does not seem to have --depth 1 equivalent |
17:41:30 | * | xkapastel joined #nim |
17:41:46 | Yardanico | yeah, I didn't find any useful one |
17:41:53 | GitDisc | <treeform> federico3, are you linking to jester spastically? |
17:42:03 | federico3 | what? |
17:42:04 | FromGitter | <krux02> Araq: that change does not do anything |
17:42:17 | FromGitter | <krux02> it is still undeclared identifier |
17:42:36 | Araq | not sure how 'lc' work but it's a gross hack :-) |
17:43:03 | Araq | essentially one overload with untyped forces untyped for every other overload |
17:43:04 | FromGitter | <krux02> but I don't understand quite why this is the case. The parser knows already the type of the first argument and with that type alone it should be clear that the macro from future should be called |
17:43:14 | GitDisc | <treeform> federico3, nimble directory is great. I would be logical for it to run tests to. I am not sure what pkg jester has todo with it? |
17:43:28 | FromGitter | <krux02> Araq: well I do understand how it works, and I can easily change it, but not without changing the syntax |
17:43:36 | GitDisc | <treeform> federico3: `Jester: The sinatra-like web framework for Nim. Jester provides a DSL for quickly creating web applications in Nim.` |
17:43:57 | FromGitter | <krux02> instead of lc[ x | ..., ...], I could simply change it to lc(x | ... , ...) |
17:44:23 | federico3 | treeform: I know what jester is. Being a popular package, it works well as an example. Please don't insult other people. |
17:44:55 | dom96 | krux02: the plan is to have for expressions and get rid of this list comprehension macro |
17:45:30 | FromGitter | <krux02> that sounds neat. But still this test wants list comprehension to work. |
17:45:31 | Araq | dom96: yes but 'lc' needs a deprecation path |
17:45:33 | * | yglukhov joined #nim |
17:45:37 | Araq | we can't just change it to () |
17:46:36 | dom96 | arghhh |
17:46:44 | dom96 | latest Nim breaks a package that choosenim depends on |
17:47:05 | Araq | so fix the package? |
17:47:07 | FromGitter | <krux02> that is shooting in your foot |
17:47:09 | FromGitter | <krux02> isn't it |
17:47:31 | FromGitter | <krux02> yes I agree, fix the package. |
17:47:39 | FromGitter | <krux02> it has to be done anyway. |
17:47:39 | dom96 | ooh, fixed already |
17:48:11 | dom96 | awesome |
17:49:06 | dom96 | now how do I test choosenim update self without releasing a new version of choosenim |
17:53:01 | FromGitter | <krux02> you release a new version of choosenim and call it pre-alpha |
17:53:29 | dom96 | orrr I hack choosenim to make it think its outdated ;) |
17:53:42 | dom96 | won't be 100% tested but at least partially |
17:53:53 | Araq | that's what I do often too :-) |
17:54:04 | Araq | works well, don't be concerned |
17:54:10 | FromGitter | <krux02> well in the entire codebase listcomprehension is only used by the test |
17:54:23 | dom96 | I predict that it might fail because of choosenim's proxyexe's though |
17:54:30 | dom96 | which I can't test easily |
17:54:51 | Araq | these proxyexes keep me awake at night |
17:56:25 | dom96 | :P |
17:56:30 | * | donotturnoff joined #nim |
17:57:25 | * | yglukhov quit (Remote host closed the connection) |
18:05:03 | FromGitter | <krux02> Araq: the Nim compiler wants to typecheck all arguments for `[]`, but fails at that. Even though there is an overload that does not nedd any typechecking. |
18:06:10 | * | MJCaley quit (Quit: MJCaley) |
18:08:12 | Araq | pretty sure that's documented behaviour |
18:09:10 | dom96 | yay, choosenim's travis failing on mac because of openssl |
18:09:26 | dom96 | Did I mention how much I hate dependencies? |
18:11:07 | FromGitter | <krux02> Araq: well I tried a lot, all I can come up with is the solution to change the syntax of list comprehension to braces instead of brackets. |
18:11:36 | * | birdspider joined #nim |
18:11:37 | FromGitter | <krux02> `let lst = lc($x | (x <- 'a'..'z'), string).asList` works fine |
18:12:26 | FromGitter | <krux02> maybe I have another idea, but it's a step backwards |
18:12:31 | Araq | how come my solution works with lc? |
18:14:10 | FromGitter | <krux02> you use untyped templates for `[]` |
18:14:28 | FromGitter | <krux02> and then you check in the template with `is` |
18:14:46 | FromGitter | <krux02> but that is not extendable |
18:15:17 | FromGitter | <krux02> I have the `[]` with a secord arument fixed as Backwards index |
18:19:28 | Araq | ah yeah |
18:20:17 | Araq | maybe make your solution opt-in? |
18:20:35 | Araq | or rather have some -d:nimIneedLc for compatibility? |
18:21:02 | Araq | your solution is pretty nice and 'lc' is pretty bad :-) |
18:22:55 | Yardanico | On list of nim projects on github sorted by stars - at least two of these packages on the first page are broken :) |
18:23:31 | Yardanico | Aporia (but I guess it's ok), and nimes (NES emulator) |
18:23:49 | Araq | broken because ...? |
18:24:09 | Yardanico | Araq, well, I mean it needs some fixing with current devel |
18:24:33 | Yardanico | nimes is broken because range type rules have changed |
18:24:45 | Yardanico | (it uses stuff like "case val mod 3 of:" |
18:26:42 | Araq | ok, that can be fixed by template modMask(x, n): untyped = range[0..n-1](x mod n) |
18:27:03 | Araq | which is how this feature should have been done in the first place :-) |
18:28:40 | livcd | https://www.reddit.com/r/golang/comments/80l18y/how_many_of_you_tried_d_why_did_you_abandon_it/?st=je5zjd4d&sh=5379822b <- i guess most of the things people comment about also apply to Nim :) |
18:28:47 | livcd | (sorry offtopic) |
18:29:38 | FromGitter | <krux02> I just looked for all usages of the identifier `lc` in nim files. sadly I can't include the `[` character in my serach. I get 170 results. Half of that is just an identifier lc used randomly, the other half is actually list compresenios. In other words. List comprehension is used 60 time all over the world. |
18:29:59 | Yardanico | I want to check if nimkernel still works with latest devel :P |
18:30:06 | Yardanico | (downloading i686 toolchain) |
18:31:17 | FromGitter | <zetashift> @livecd half of em are complaints about D's history and the other half about better tooling |
18:31:27 | FromGitter | <zetashift> Nim can learn from both and apply it |
18:31:54 | * | birdspider quit (Quit: Leaving) |
18:33:02 | FromGitter | <krux02> yes Nim can learn from the mistakes of D |
18:33:10 | FromGitter | <krux02> but nim is not D |
18:33:14 | FromGitter | <krux02> I think nim is better than D |
18:33:28 | Yardanico | ok, apparently nimkernel still compiles & works (although it's not a big codebase) |
18:33:35 | Yardanico | which is cool :) |
18:33:36 | dom96 | really? |
18:33:38 | dom96 | it works for you? |
18:33:38 | Yardanico | dom96, yes |
18:33:41 | FromGitter | <krux02> without testing D, but nim has typed ast based macros |
18:33:45 | Yardanico | dom96, why not? |
18:33:46 | FromGitter | <krux02> power feature. |
18:33:49 | FromGitter | <zetashift> @Yardanico wow I didn't expect that to compile |
18:33:55 | dom96 | I haven't tested it since I wrote it :P |
18:34:05 | Yardanico | dom96, but I used i686-elf-gcc compiler instead of i586-elf-gcc, not much difference though |
18:34:19 | FromGitter | <zetashift> nimkernel is one of the first things I explored while reading on nim :O |
18:34:31 | Yardanico | apparently there's no deprecation warnings compiling nimkernel :D |
18:34:44 | dom96 | livcd: "No job security" |
18:34:56 | dom96 | So basically "No Google behind it" |
18:35:12 | Araq | so .. for loop expressions are pretty tough to implement |
18:35:33 | Araq | the parser change looks easy enough but the rewrite rule is not obvious how to design |
18:35:53 | Araq | a for loop yielding type T gets the type ForLoopExpr[T] |
18:36:08 | Araq | and then in theory you can match this type in a macro and perform the rewrite on your own |
18:37:03 | Araq | except we can't easily rewrite @[for i in 0..3: i] becuase the array [] constructor is builtin |
18:37:38 | dom96 | I'm really tempted to ask "How many of you tried Nim. Why did you abandon it?" :) |
18:37:57 | Araq | you are never depressed enough, are you? |
18:38:05 | Araq | :P |
18:38:40 | Araq | maybe it I use a toSeq macro |
18:38:48 | Araq | toSeq(for i in 0..4: i) |
18:39:50 | Yardanico | look at this beauty - https://i.imgur.com/9WR4MzW.png |
18:40:02 | dom96 | :D |
18:40:21 | dom96 | Now rewrite Linux in Nim :P |
18:40:33 | federico3 | Yardanico: what is it? |
18:40:38 | Yardanico | federico3, nimkernel? |
18:41:22 | FromGitter | <alehander42> the index out of bounds does it for me |
18:41:35 | Araq | nimkernel is an exokernel |
18:41:44 | Yardanico | alehander42: it's just for testing exception handling :P |
18:42:10 | FromGitter | <alehander42> :D it's still beautiful |
18:42:23 | dom96 | It's a work of art |
18:42:35 | dom96 | Bids start at £1,000,000 |
18:43:38 | Yardanico | with nim v2 it'll be actually a lot easier to write kernel in nim :) |
18:43:45 | Yardanico | because no GC |
18:44:00 | Yardanico | well, I think you can port some GC to this nimkernel too |
18:44:53 | * | salewski joined #nim |
18:44:56 | FromGitter | <zetashift> Haven't people made OS's in GC-d langs for years? OTOH OCaml has a pretty known unikernel |
18:45:08 | Yardanico | dom96, there's also mero which is based on your nimkernel: https://github.com/samanthadoran/Mero |
18:45:13 | Yardanico | it's actually cool (but it requires some fixing) |
18:45:21 | Yardanico | and it has memory allocation! |
18:45:26 | dom96 | :o |
18:46:05 | dom96 | I remember when I was making nimkernel and wondering how to handle memory with the GC |
18:46:10 | dom96 | and Araq said I should just use the GC :P |
18:47:12 | Araq | I still think you can make Nim's GC run in kernel space |
18:47:34 | Araq | you have a heap and a stack, you can have a GC |
18:48:19 | FromGitter | <krux02> I don't think you want a GC in kernel space, but yea, who knows. |
18:48:21 | Yardanico | :D https://github.com/samanthadoran/Mero/blob/master/source/keyboard.nim#L74 |
18:48:31 | FromGitter | <krux02> I am no expert in kernel programming |
18:48:40 | FromGitter | <krux02> but the screenshot reminded me of my program |
18:50:15 | Araq | that's just C being dump. memset() is a CPU feature, not an OS feature |
18:50:37 | Araq | if you can't use string.h in your kernel, get a string.h that works |
18:50:57 | * | Trustable quit (Remote host closed the connection) |
18:52:06 | Araq | some header files are more equal than others |
18:55:00 | dom96 | bah, zahary added a lot of nimble packages without a PR |
18:55:54 | ehmry | a nim unikernel would be cool, but these days it should be unikernels or microkernels. hopefully linux isn't going to happen again |
18:56:59 | salewski | Does someone have an idea about https://github.com/StefanSalewski/gintro/issues/24 |
18:57:12 | salewski | may it just be missing ssl for nimgrab? |
18:57:21 | FromGitter | <zetashift> I compiled with d:ssl tho |
18:57:27 | FromGitter | <zetashift> :D |
18:58:00 | salewski | For linux nimgrab was working fine when compiled with ssl. |
18:58:04 | FromGitter | <zetashift> Should I try it with this: http://gnuwin32.sourceforge.net/packages/wget.htm ? |
18:58:52 | salewski | Yes, would be good. But we have to find out why nimgrab fails, araq said it should work once. |
18:59:32 | FromGitter | <krux02> I don't use nimgrep, normal grep just works fine |
19:00:01 | Araq | zetashift: update your Putty client |
19:00:23 | Araq | krux02 nimgrep does much more than grep though |
19:00:26 | salewski | nimgrab -- not related to nimgrep! |
19:00:45 | Araq | that too. |
19:01:05 | FromGitter | <krux02> I thought it was a typo |
19:01:28 | Araq | you know the saying, "nimgrab her by the Putty" |
19:01:33 | FromGitter | <krux02> is nimgrep just forwarding to grep but with a regexp change? |
19:02:07 | FromGitter | <krux02> well I have to go |
19:03:27 | Araq | in short: no. |
19:06:14 | Araq | zetashift: does it work? |
19:09:52 | FromGitter | <zetashift> Haha I posted in the wrong gitter |
19:10:09 | salewski | zetashift: But even when it installs, there may be problems. Some people have trouble getting GTK3 working on Windows at all. |
19:10:38 | FromGitter | <zetashift> I asked "@Araq, how do I even update the Putty client? Google says w10 ships with OpenSSH" |
19:11:20 | Araq | well hmmm |
19:11:33 | Araq | that solved it for me yesterday |
19:11:44 | Araq | try our new OpenSSL DLLs |
19:13:23 | shashlick | dom96: in case you didn't find this yet - https://nim-lang.org/docs/rdstdin.html |
19:13:25 | shashlick | looks like irclogs is down |
19:13:54 | FromGitter | <zetashift> @Araq, I did a clean install yesterday; So I should have the latest DLL's(which I downloaded from the site) |
19:14:26 | Araq | you don't because 0.18 is not yet out which will ship with these |
19:14:30 | Araq | just a sec |
19:15:32 | dom96 | shashlick: works for me |
19:16:04 | dom96 | I hope we remove this rdstdin thing |
19:16:20 | dom96 | why even have a separate module for this.. |
19:16:31 | shashlick | ya, just saw your stream and was wanting to chime in :) |
19:16:49 | Araq | rdstdin is what the compiler uses |
19:17:09 | shashlick | watching: https://www.youtube.com/watch?v=Oiw23yfqQy8 |
19:17:30 | Araq | do we really want the linenoise dependency whenevery somebody uses terminal.nim? |
19:17:49 | Araq | terminal is for TUIs, rdstdin is for line histories |
19:17:53 | dom96 | we don't, but we also don't want these tiny modules that "the compiler uses" |
19:18:42 | Araq | you mean the stuff that doesn't break? :P |
19:19:06 | ehmry | I was using readlinewrap before I relalized there was rdstdin, now I just use rdstdin so that stuff like terminal echo works |
19:21:46 | ehmry | rlwrap gives you line history with no compile dependencies |
19:21:48 | * | ludocode left #nim (#nim) |
19:22:55 | Araq | and Windows gives every terminal program a history out of the box :P |
19:23:12 | Araq | Windows -- king of the command line. |
19:25:22 | livcd | yeah but i had to reboot to unfuck the %PATH% when updating Nim |
19:25:32 | livcd | cons and pros |
19:27:04 | Araq | get "Rapid Environment Editor" or restart your console |
19:27:13 | Araq | there is no need whatsoever to do a full reboot |
19:27:22 | Araq | maybe if you're on Win95 |
19:27:38 | livcd | I did. Something running still held the old configuration. |
19:28:05 | dom96 | That would be no different on other OSs |
19:29:01 | FromGitter | <zetashift> @Araq how can I get my hands on those updates DLL's. I am running on latest devel though ;D |
19:29:34 | * | watzon joined #nim |
19:30:32 | watzon | Does anyone know if a package exists for adding colors to strings for use with the logging module? Asking for a friend. |
19:30:34 | livcd | Idk other OSs fuser or lsof usually work unlike this one. |
19:31:21 | FromGitter | <zetashift> @watzon you mean: https://nim-lang.org/docs/terminal.html ? |
19:31:34 | GitDisc | <treeform> after analyzing all pkgs here are some stats: |
19:31:36 | GitDisc | <treeform> ```good 383 |
19:31:36 | GitDisc | <treeform> invalidStrucutre 208 |
19:31:37 | GitDisc | <treeform> invalidNakefile 1 |
19:31:37 | GitDisc | <treeform> invalidNimbleName 6 |
19:31:37 | GitDisc | <treeform> invalidName 8 |
19:31:38 | GitDisc | <treeform> missingNimble 2 |
19:31:38 | GitDisc | <treeform> missingReadme 1 |
19:31:39 | GitDisc | <treeform> hasNameInNimble 2``` |
19:31:57 | FromGitter | <zetashift> that's decent |
19:32:02 | Araq | hasNameInNimble? |
19:32:08 | Araq | what does that mean? |
19:32:12 | GitDisc | <treeform> name = "foo" is not valid any more |
19:32:21 | GitDisc | <treeform> you can't have a name directive in nimble |
19:33:33 | watzon | @zetashift can that be used in conjunction with the logging module? I haven't used Nim for a bit so I'm not much help to the guy that needs to know. |
19:34:43 | GitDisc | <treeform> Araq: see https://gist.github.com/treeform/3f692bbc6932af0c6a994c70ed8aeeff |
19:35:05 | GitDisc | <treeform> this line needs to be removed: https://github.com/baabelfish/mangle/blob/master/mangle.nimble#L2 |
19:35:09 | dom96 | hey watzon. I think your friend will need to implement their own `Logger`, similar to the `FileLogger`. |
19:35:24 | dom96 | or rather, the ConsoleLogger I was meaning to say :) |
19:35:38 | FromGitter | <zetashift> @watzon I thought you had a ConsoleLogger and could just manipulate that with terminal ;P |
19:35:47 | watzon | It seems like it will change all of the colors for the terminal at the same time. I think he was hoping for one that you can use to colorize strings individually |
19:36:13 | watzon | Ahh I gotcha |
19:36:32 | FromGitter | <SitiSchu> For clarification: I'd like to do something like this: http://i.sitischu.com/21f0d |
19:36:47 | FromGitter | <SitiSchu> (I'm the guy @watzon is talking about ^^) |
19:37:44 | dom96 | yeah, just take a look at how the ConsoleLogger is implemented in the logging module and then implement your own ColoredConsoleLogger :) |
19:38:04 | dom96 | You should be able to mostly copy and paste its implementation |
19:38:24 | FromGitter | <SitiSchu> ok I guess I'll do that, thanks a lot :) |
19:42:00 | * | fvs left #nim ("ERC (IRC client for Emacs 25.3.1)") |
19:47:20 | * | natrys joined #nim |
19:47:43 | planetis[m] | Hello!, how can I make this code work in nim https://gist.github.com/konqoro/4f802a496d961789f5c570ca59a21581 ? |
19:49:21 | planetis[m] | it errors fact.nim(24, 15) Error: ambiguous call; both fact.factorial(n: int64 or uint64)[declared in fact.nim(16, 5)] and fact.factorial(n: int8 or uint8)[declared in fact.nim(22, 8)] match for: (int literal(20)) |
19:49:42 | * | yglukhov joined #nim |
19:50:04 | planetis[m] | its from julia stdlib btw |
19:51:00 | * | xkapastel quit (Quit: Connection closed for inactivity) |
19:51:38 | Araq | factorial for int8? |
19:51:40 | Yardanico | planetis[m], well 20 is ambiguous |
19:51:47 | Araq | what's the point? |
19:52:32 | planetis[m] | ok i will remove that one |
19:53:38 | planetis[m] | still the same |
19:53:59 | Araq | zetashift: http://nim-lang.org/download/dlls3.zip |
19:53:59 | planetis[m] | but why its ambiguous? |
19:55:30 | Araq | because 'int' is not in your list |
19:55:40 | Araq | and 20 is of type 'int' |
19:56:05 | Araq | int is not an alias, it's a type of its own |
19:57:20 | planetis[m] | ok got it |
20:00:09 | planetis[m] | calculating 13! at compile time won't work anyway in 32bit right? |
20:02:46 | Yardanico | planetis[m], why wont? |
20:02:49 | Yardanico | ah |
20:04:35 | planetis[m] | it overflows an int32 |
20:05:31 | Yardanico | planetis[m], and what about int64 ? |
20:05:45 | planetis[m] | ok I remade it |
20:06:34 | planetis[m] | the limit is 20! |
20:06:36 | planetis[m] | for 64 |
20:08:22 | Yardanico | planetis[m], what about uint64 ? |
20:08:35 | Yardanico | you don't need negative numbers for factorial, right? :) |
20:08:57 | planetis[m] | I think I like it better than the julia version |
20:09:02 | planetis[m] | nim is cool |
20:09:08 | * | MJCaley joined #nim |
20:09:26 | planetis[m] | you are tough to satisfy :p |
20:09:27 | planetis[m] | idk |
20:12:31 | * | yglukhov quit (Remote host closed the connection) |
20:13:27 | * | r3d9u11 quit (Remote host closed the connection) |
20:15:28 | dom96 | Damn, looks like I've been hit by the classic error of my program thinking that v0.8.10 is actually 0.8.1 D: |
20:17:37 | FromGitter | <zacharycarter> Can anyone explain to me why - https://play.nim-lang.org/?gist=6b02354bb8e850eff9eea2d0b405dbde - doesn't work / how to implement it correctly? |
20:18:59 | * | salewski quit (Quit: WeeChat 1.9.1) |
20:20:29 | Araq | w.kind == PlayerKind.Warrior is not known at compile-time |
20:21:26 | FromGitter | <zacharycarter> ahhh okay - I didn't realize evaluations inside concepts had to be compile-time ready - but that's totally logical |
20:21:33 | FromGitter | <zacharycarter> hrm - I guess it might be tougher to do this than I expected |
20:21:59 | Araq | dunno, concepts are mostly sugar |
20:22:23 | Araq | I can always write the code without a concept since Nim checks the types at instantiation time |
20:22:50 | FromGitter | <zacharycarter> yeah - I guess I might be able to achieve this with a macro or something? |
20:23:44 | FromGitter | <zacharycarter> not really sure how to do type refinement based on a runtime value |
20:23:51 | FromGitter | <zacharycarter> I guess you can't |
20:24:53 | Araq | it's a type system, it only deals with compiletime :-) |
20:24:59 | FromGitter | <zacharycarter> yeah heh |
20:37:11 | Yardanico | I still feel this proc has a pretty long name :) https://github.com/nim-lang/Nim/commit/a897371797154844f96906e72fa013b8205d0393 |
20:37:21 | Yardanico | but you don't use it a lot, so that's fine |
20:42:19 | FromGitter | <SitiSchu> use an editor with autocomplete I guess ^^ |
20:44:33 | Yardanico | I do :P |
20:53:10 | * | xkapastel joined #nim |
20:54:56 | * | rokups quit (Quit: Connection closed for inactivity) |
20:56:27 | federico3 | dom96: does Nimble strictly requires a README.md file? |
20:57:02 | dom96 | no |
20:57:23 | federico3 | any README* ? |
20:57:34 | dom96 | no, why would it? |
20:57:57 | federico3 | just checking - it was claimed on https://github.com/FedericoCeratto/nim-syslog/issues/7 |
20:59:00 | dom96 | hrm, linux binary for newest choosenim seems suspiciously small |
20:59:25 | dom96 | treeform: "nimble requires projects to have README.md. Would you please convert README.adoc to README.md?" |
20:59:31 | dom96 | That's wrong |
21:00:07 | federico3 | dom96: https://github.com/nim-lang/nimble#project-structure make it looks so |
21:00:48 | dom96 | Why would Nimble require an .md file? |
21:02:12 | federico3 | are you asking me? |
21:03:44 | dom96 | I just don't see a reason for spelling out that '.adoc' or '.rst' or whatever other format you want is fine too |
21:04:28 | federico3 | dom96: if you are asking me: there's a README.md listed in the project structure that makes it look like it's required |
21:04:52 | dom96 | The text above it has the word "recommended" :( |
21:05:30 | dom96 | Choosenim 0.3.2 is officially here https://github.com/dom96/choosenim/blob/master/changelog.markdown#032---27022018 |
21:06:33 | * | Jesin quit (Quit: Leaving) |
21:07:06 | Yardanico | dom96, btw, just curious - how much unique IDs (people) you have in analytics? |
21:07:16 | Yardanico | who accepted sending anonymous data |
21:07:36 | dom96 | don't know the count |
21:07:53 | dom96 | Not even sure how to check it |
21:10:53 | * | do_not_turn_off joined #nim |
21:11:57 | * | donotturnoff quit (Ping timeout: 240 seconds) |
21:14:43 | dom96 | To give you a sort of ball park, the peak number of "users" (no idea how analytics even defines them) on the same day was 27 on January 9, 2018. |
21:15:57 | Araq | oh my I broke the tests again |
21:16:26 | Araq | and I cannot open appveyor's results anymore as that freezes my browser |
21:16:32 | dom96 | I think the "users" are basically the unique IDs though |
21:16:45 | Araq | so I have to look at travis' log |
21:18:43 | * | vivus joined #nim |
21:19:44 | dom96 | The OS split is: 66% Linux, 12.7% Mac and 20% Windows |
21:20:06 | dom96 | Impressed that Windows is more popular than Mac |
21:20:22 | FromGitter | <Bennyelg> :| interesting. |
21:20:37 | * | do_not_turn_off quit (Ping timeout: 252 seconds) |
21:21:02 | Araq | so many Linux users, interesting |
21:21:24 | FromGitter | <Bennyelg> Windows is deprecated since fedora 3 |
21:21:27 | FromGitter | <Bennyelg> :) |
21:21:36 | dom96 | Araq: Most are probably just travis CI |
21:22:09 | Araq | travis CI visits our website? |
21:22:21 | * | yglukhov joined #nim |
21:22:36 | dom96 | this is choosenim |
21:30:52 | GitDisc | <treeform> dom96, "Why would Nimble require an .md file?" https://gist.github.com/treeform/2c5b6b3fa302ccf2da5d3005d2bea1ba |
21:31:02 | GitDisc | <treeform> I think its what that error message is trying todo? Am I wrong? |
21:31:52 | dom96 | https://github.com/FedericoCeratto/nim-syslog/blob/master/syslog.nimble#L16 |
21:32:27 | dom96 | good that 'check' catches that |
21:32:30 | dom96 | I didn't test it |
21:33:13 | GitDisc | <treeform> requiring README.md file is not a bad idea ... |
21:33:30 | GitDisc | <treeform> but I see the person says they have the file, then they have a different file/ |
21:33:38 | GitDisc | <treeform> I will change my PR |
21:36:16 | GitDisc | <treeform> I hope I made the PR more clear: https://github.com/FedericoCeratto/nim-syslog/issues/7 |
21:36:38 | dom96 | That's not a PR :) |
21:36:48 | GitDisc | <treeform> sorry issue |
21:37:01 | GitDisc | <treeform> repo has too many errors, I don't want to rewrite it just yet. |
21:38:56 | GitDisc | <treeform> dom96, what should I do about packages that have `-` and `.` in the name? |
21:39:11 | dom96 | ask the maintainer to rename |
21:39:19 | GitDisc | <treeform> ok |
21:39:49 | GitDisc | <treeform> was it a valid name before? |
21:39:54 | GitDisc | <treeform> how did they get added? |
21:40:11 | dom96 | it was |
21:49:08 | GitDisc | <treeform> What are the rules for taking over unmaintained pkgs like? https://github.com/barcharcraz/nim-assimp |
21:49:23 | GitDisc | <treeform> 3 PRs, last commit 3 years ago... |
21:51:21 | GitDisc | <treeform> dom96, what are your thoughts about naming like `nimfoo` and `foonim` should that be discouraged? |
21:54:15 | * | rauss quit (Quit: WeeChat 2.0.1) |
21:54:37 | * | rauss joined #nim |
21:56:37 | dom96 | I discourage it |
21:56:40 | dom96 | but not enough to ask for a rename |
21:58:57 | * | rauss quit (Ping timeout: 245 seconds) |
21:59:08 | * | sz0 quit (Quit: Connection closed for inactivity) |
22:00:17 | * | rauss joined #nim |
22:09:28 | * | natrys quit (Quit: natrys) |
22:09:53 | * | nsf quit (Quit: WeeChat 2.0.1) |
22:10:25 | jaco60 | Hello... Don't know if it's the place for newbie questions but, just in case... How to specify a width spec in format strings ? I've understood Nim uses the old Python 3.x format thing to interpolate values in strings but how can i do the same as {:.2}, for example ? |
22:19:03 | dom96 | jaco60: fmt"{1.2:.2f}" might work |
22:19:50 | dom96 | where <1.2> can be your variable |
22:20:01 | dom96 | (the `fmt` macro is defined in strformat) |
22:23:11 | jaco60 | dom96 : strformat is in the devel branch ? |
22:23:32 | dom96 | yep |
22:23:36 | jaco60 | argh |
22:23:57 | jaco60 | nvm... i'll use printf... |
22:24:09 | dom96 | Just grab devel |
22:24:19 | * | MJCaley quit (Quit: MJCaley) |
22:24:31 | dom96 | Nim moves fast so you'd want to use that for now anyway |
22:25:35 | jaco60 | @dom96 is there a documentation about new features introduced by devel ? (something like a "What's new?" ?) |
22:26:16 | dom96 | https://github.com/nim-lang/Nim/blob/devel/changelog.md |
22:26:32 | jaco60 | Cool, thanks |
22:28:17 | FromGitter | <zetashift> @Araq @salewski that didn't fix the error |
22:29:13 | Zevv | Hi. I'm building a simple regular expression / pattern matching lib based on Lua patterns |
22:29:33 | Zevv | I'm looking for a way to return a variable number of captures |
22:29:53 | Zevv | Why are these two considered the same? |
22:29:54 | Zevv | proc match(src: string, pat: string): (string, string) |
22:29:56 | Zevv | proc match(src: string, pat: string): (string, string, string) |
22:30:11 | Araq | because overloading doesn't look at the return types |
22:30:20 | Zevv | Ok, that makes sense |
22:32:01 | Zevv | Are there any idiomatic solutions to this? |
22:32:21 | Zevv | For easy unpacking I'd like to return a tuple, but the number of elements depends on the captures made by the pattern matching |
22:45:29 | Araq | write a macro |
22:48:29 | * | Jesin joined #nim |
22:59:03 | * | jaco60 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
23:16:02 | * | yglukhov quit (Remote host closed the connection) |
23:31:41 | * | yglukhov joined #nim |
23:33:45 | * | vlad1777d_ joined #nim |
23:36:17 | * | yglukhov quit (Ping timeout: 256 seconds) |
23:54:57 | * | SitiSchu joined #nim |