<< 22-12-2016 >>

00:06:28*ftsf_ quit (Ping timeout: 258 seconds)
00:18:49*ftsf_ joined #nim
00:20:52*SunDwarf is now known as eyes
00:23:33*renesac joined #nim
00:25:44*dddddd quit (Remote host closed the connection)
00:26:39*subsetpark quit (Quit: Connection closed for inactivity)
00:35:04*themagician quit ()
00:36:10*yglukhov joined #nim
00:39:03*Matthias247 quit (Read error: Connection reset by peer)
00:40:29*yglukhov quit (Ping timeout: 252 seconds)
00:41:23*Sentreen_ joined #nim
00:43:09*acidx_ joined #nim
00:43:39*zama_ joined #nim
00:45:45*Sentreen quit (Ping timeout: 240 seconds)
00:45:45*acidx quit (Ping timeout: 240 seconds)
00:45:45*zama quit (Ping timeout: 240 seconds)
00:50:55*zama_ quit (Changing host)
00:50:55*zama_ joined #nim
00:50:58*zama_ is now known as zama
00:57:20*chemist69_ quit (*.net *.split)
00:57:20*jivank[m] quit (*.net *.split)
00:59:46*space-wizard joined #nim
01:07:02*chemist69_ joined #nim
01:07:02*jivank[m] joined #nim
01:07:21*vlad1777d quit (Quit: Leaving)
01:26:26*ftsf_ quit (Quit: :q!)
01:38:20*yglukhov joined #nim
01:38:54*eizua joined #nim
01:41:33*space-wizard quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:42:41*yglukhov quit (Ping timeout: 246 seconds)
02:48:18*krux02 quit (Quit: Leaving)
02:57:56*chemist69_ quit (Ping timeout: 240 seconds)
03:11:36*chemist69 joined #nim
03:39:46*yglukhov joined #nim
03:44:22*yglukhov quit (Ping timeout: 250 seconds)
04:07:21*brson quit (Quit: leaving)
04:55:52*space-wizard joined #nim
05:40:53*djellemah quit (Ping timeout: 248 seconds)
05:41:28*yglukhov joined #nim
05:42:19*djellemah joined #nim
05:43:40*djellemah quit (Max SendQ exceeded)
05:44:38*djellemah joined #nim
05:45:42*yglukhov quit (Ping timeout: 250 seconds)
06:12:26*pregressive quit (Remote host closed the connection)
06:12:59*pregressive joined #nim
06:17:33*pregressive quit (Ping timeout: 245 seconds)
06:28:28*rokups joined #nim
06:51:28*nsf joined #nim
07:34:16*vlad1777d joined #nim
07:40:03*chemist69 quit (Ping timeout: 245 seconds)
07:40:57*chemist69 joined #nim
07:43:26*yglukhov joined #nim
07:45:33*Arrrr joined #nim
07:48:11*yglukhov quit (Ping timeout: 265 seconds)
07:53:00*kulelu88 quit (Quit: Leaving)
08:04:31*space-wizard quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:05:51ArrrrThe new import is nice, but i'd like to be able to import with seqs, for example: import compiler/@[ast, parser, lexer][1..2], to confuse newbes
08:06:53*space-wizard joined #nim
08:06:53*space-wizard quit (Client Quit)
08:08:19*space-wizard joined #nim
08:08:28*space-wizard quit (Client Quit)
08:09:08*space-wizard joined #nim
08:09:16*space-wizard quit (Client Quit)
08:10:05*space-wizard joined #nim
08:10:05*space-wizard quit (Client Quit)
08:10:53*space-wizard joined #nim
08:10:53*space-wizard quit (Client Quit)
08:12:51*azur_kind joined #nim
08:14:35AraqArrrr: ok.
08:14:46Araq:-)
08:15:49vlad1777dIt's so implicit =)
08:15:53Araqfor this you need a macro then.
08:16:20*lenstr quit (Ping timeout: 250 seconds)
08:16:28Araqchoose ast, parser, lexer # import randomly
08:16:58vlad1777dno, it's not even implicit, it looks unclear )
08:30:48ArrrrRandom import, you are taking it to the next level
08:31:12Arrrrnethack for devs
08:45:54*yglukhov joined #nim
08:50:57*Andris_zbx joined #nim
08:55:48FromGitter<vegansk> Hi to all!
08:55:51*yglukhov quit (Ping timeout: 268 seconds)
08:56:44FromGitter<vegansk> What's wrong with ``-d:useNimRtl``? I'm getting the error: ⏎ ⏎ ```lib/system/threads.nim(310, 8) Error: implementation of 'system.deallocOsPages()' expected``` [https://gitter.im/nim-lang/Nim?at=585b954caf6b364a29e2c60c]
09:14:44*pregressive joined #nim
09:14:45FromGitter<vegansk> Is this the reason (from http://nim-lang.org/docs/nimc.html#dll-generation)? ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=585b99850730ce6937f7e083]
09:15:45*pregressive quit (Read error: Connection reset by peer)
09:16:13*pregressive joined #nim
09:20:28*pregressive quit (Ping timeout: 250 seconds)
09:33:18Araqvegansk: I don't know. as far as I know, dynlib support is part of the test suite
09:33:35Araqand thus should simply work (tm)
09:52:51*gokr joined #nim
09:52:57FromGitter<vegansk> @Araq, I found some problems when creating so/dll that will be used in multithreaded C application. Will file an issue. For example, I can initialize global var only in the thread that calls NimMain, and setupForeignThreadGc didn't help. Is this a bug?
09:53:13*yglukhov joined #nim
09:54:41FromGitter<vegansk> And yes, the test works, untill you add ``--threads:on`` switch:
09:54:59FromGitter<vegansk> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=585ba2f2e7bdfe4e2985f824]
09:57:45Araqah ok so we don't use it with --threads:on
09:57:50Araqdefinitely an issue
10:00:43FromGitter<rivasiv> hi , I am trying to play with c2nim to get some working nim driver and for the following peace of code I got zero output : ⏎ #ifdef C2NIM ⏎ # def STAILQ_HEAD(name, type) \ ⏎ struct name { \ ⏎ struct type *stqh_first;/* first element */ \ ... [https://gitter.im/nim-lang/Nim?at=585ba44baf6b364a29e31768]
10:02:09FromGitter<rivasiv> I actually converted macro with \def directive do I need to do something additionally ?
10:02:56FromGitter<Araq> well #def is a c2nim macro
10:03:18FromGitter<Araq> you don't call the macro, hence no output
10:06:34FromGitter<rivasiv> so it will work only in case I'll include other file where the macro is called - correct?
10:08:54*themagician joined #nim
10:09:51FromGitter<Araq> yes
10:11:34FromGitter<rivasiv> thanks
10:12:39FromGitter<andreaferretti> about the discussion on supporting native package managers in nimble
10:12:50FromGitter<andreaferretti> what would be a use case?
10:12:59dom96nimble install gtk
10:13:10dom96./gtk-app -> could not import libgtk.so
10:13:46FromGitter<andreaferretti> yes, but the issue I see with that is that it would only be useful for end programs (as opposed to libraries)
10:13:58FromGitter<andreaferretti> and those are mostly installed with the native package manager anyway
10:14:11FromGitter<andreaferretti> what I mean is
10:14:38FromGitter<andreaferretti> right now, one can *depend* on, say, the gtk library (as opposed to installing it globally)
10:14:51FromGitter<andreaferretti> that dependency is a local thing
10:15:04FromGitter<andreaferretti> it only affects the project that declares that dependency
10:15:30FromGitter<andreaferretti> if libraries start installing things globally as a consequence of being depended upon
10:15:36FromGitter<andreaferretti> all hell breaks loose
10:16:07FromGitter<andreaferretti> end programs (say Aporia) may in fact depend on native libraries
10:16:29dom96yes, well, it will likely just be a message.
10:16:31FromGitter<andreaferretti> but maybe the right way would to simplify the creation of an actual deb/rpm package for end programs
10:16:36FromGitter<Araq> well I had the problem with testing some math library depending libblas or something
10:16:42dom96Nimble won't be installing any native packages.
10:16:51FromGitter<andreaferretti> ah ok
10:16:52FromGitter<Araq> it's not just for apps
10:16:56vlad1777dandreaferretti, this could be decided by "optional" installing of dependencies in system, not forced
10:17:10FromGitter<andreaferretti> what I really would like to see
10:17:22FromGitter<Araq> but yeah, what dom said, it should just be a message what to run to install further deps
10:17:26dom96yeah, we can do what vlad1777d said in the future as well
10:17:29FromGitter<andreaferretti> is integration with some tool that is able to install c dependencies locally
10:18:11FromGitter<andreaferretti> such as https://conan.io/
10:18:20FromGitter<andreaferretti> (and of course with npm :-P)
10:18:44FromGitter<andreaferretti> without having to mess with the globally installed stuff
10:19:26dom96There is too many package managers out there to support :P
10:19:51dom96You will be able to display "Make sure to run npm install blah so that this library functions properly.
10:19:58dom96or similar
10:20:24vlad1777dandreaferretti, this could be decided by supporting "flatpak" and/or "snap". Or making standalone all-distributive app with launch script (using LD_LIBRARY_PATH)
10:20:40Arrrrcan you use http stuff from nimscript?
10:21:08FromGitter<andreaferretti> yeah flatpak would be nice :-)
10:21:19AraqArrrr: hell no :-)
10:21:36FromGitter<andreaferretti> btw, I have been toying with the idea of writing some nimscript fucntions and templates
10:21:38Araqyou can staticExec curl or wget or something
10:21:40vlad1777dyes, of course, the better way - to display message with dependencies in systems with unsupported package managers to user to install them manually
10:21:46FromGitter<andreaferretti> to declare js dependencies for js projects
10:21:53ArrrrI see
10:21:57FromGitter<andreaferretti> and them generating a package.json
10:22:08FromGitter<andreaferretti> and running npm in nimble tasks
10:22:14FromGitter<andreaferretti> but I did notfind the time yet
10:22:45AraqArrrr: nimble can register new builtins though and support http via NimScript
10:23:25Araqbut the compiler should not support it out of the box
10:23:42dom96A nimble builtin for downloading things will probably be useful
10:24:15ArrrrCould be useful, for example to have a task called "nim newproject $Path" that creates a project and the required dlls, for example
10:25:36Arrrr"nim newproject gtk ../YoutubeViewer/"
10:26:13dom96I don't know what "the required dlls" entails, but `nimble init` is pretty much this.
10:27:14ArrrrBut i understand nimble init is the command used to build a standalone project
10:27:49ArrrrIf you want to develop a library which forms the basis of some project (videogames?), you could define a task to create a new project skeleton
10:28:23*yglukhov quit (Remote host closed the connection)
10:29:35Araqthe API seems hard
10:30:48AraqforeignDep(ubuntu: "libblas-dev", windows: "blas", others: "libblas")
10:31:39dom96I still don't understand why `nimble init` couldn't take care of whatever functionality you have in mind for `newproject`.
10:31:47Araqer make that
10:31:58AraqforeignDep(ubuntu = "libblas-dev", windows = "blas", others ="libblas")
10:32:06Araqand foreignDep a macro.
10:32:11Araqany better ideas?
10:32:44*Arrrr quit (Ping timeout: 256 seconds)
10:33:13Araqthe macro knows about lots of Linux distros and errors if you use an unsupported OS
10:34:00Araqand it knows how to install packages ("apt-get install", "yum banana", ...)
10:34:22Araqfor OSX it should use 'brew'
10:34:38Araqfor Windows, who knows ...
10:34:40*Arrrr joined #nim
10:35:34ArrrrWell, init is a good name too.
10:35:53ArrrrOn windows you'll need to download and unzip.
10:36:07Arrrrusually
10:36:40Araqfor unknown package managers we can have foreignCmd("npm package.js") but I don't know if that adds anything to 'echo "run: npm package.js\nto complete installation"'
10:37:19Araqwell if we choose later to run these commands instead of echoing them, the abstraction becomes useful
10:38:42Araqso. my proposal: add these 2 builtins to Nimble's Nimscript support
10:39:31*Matthias247 joined #nim
10:39:55dom96Araq: Make an issue ;)
10:40:37Araqonly if I get no objections here
10:42:24Araqhttps://en.wikipedia.org/wiki/List_of_software_package_management_systems#Linux
10:43:18Araqthe list of package managers is not as long as the list of distros btw, maybe we can use this fact to our advantage and looks for the existance of /usr/bin/nix etc
10:44:52euantorThat list is hiding the fact that RPM has `yum`, `dnf`, `zypper`, `urpmi` and probably others based upon it depending on distribution
10:45:24Araqah good catch
10:47:13euantorAnd `apt`, `apt-get` and `aptitude` are hidden under a single entry
10:47:31euantorAnd no obvious mention of Gentoo's `emerge`
10:48:18Araqyou just volunteered to implement this, right?
10:49:05euantorWell, I do have a week off for Christmas... I might be able to look at it if I understand exactly what we want
10:50:33euantorAnd of course the Mac has `brew` and `macports`, and on BSD system you have the ports tree
10:53:19dom96bbl
10:53:36ArrrrSupport the two or three most populars and give an option to define your own maybe.
10:59:56*derlafff quit (Ping timeout: 256 seconds)
11:00:27vlad1777dAll package managers have similar commands for installing, so giving option to define custom commands to drive custom package manager, seems, is not very difficult task
11:01:34*derlafff joined #nim
11:03:11euantor^ THat sounds like a volunteer to me :)
11:04:17Arrrrhaha
11:13:01*yglukhov joined #nim
11:14:34*yglukhov quit (Remote host closed the connection)
11:23:16*yglukhov joined #nim
11:38:53vlad1777d=)
11:42:51vlad1777deuantor, I know Nim not very good yet, I came from Python (work with Django), so I decided to rewrite my Chess into Nim + GTK to better understand it. Also it's my first "compiliable" language, so I have some difficults with it. But I have experience in writing Python wrapper over apt (I stopped because Linux Mint team already did this), so when I'll feel free with Nim, think, I could make some help in free time.
11:43:14Araqeuantor: https://github.com/nim-lang/nimble/pull/283
11:43:31Araqadd Linux distros and their package managers to this scheme
11:44:09Araqdom96: too lazy to write an issue so I started with a PR
11:44:19euantorAlright, I'll see what I can do
11:44:46Araqbbl
11:50:56dom96Araq: A good start :)
11:53:02ArrrrDo packets share the same name across package managers?
11:53:47*Kingsquee joined #nim
11:54:19ArrrrOtherwise you could define another enum for pms: 'foreignDep(PM.APT, "gtk")'
11:55:10*Kingsquee quit (Client Quit)
11:55:39dom96they don't
12:02:21*Snircle joined #nim
12:02:52vlad1777dAraq, it's interesting example of code for me, who learns only language. Why did you made separate check and adding "sudo" command, instead of writing it right near "apt-get install "?
12:08:49*chemist69 quit (Ping timeout: 260 seconds)
12:13:12*chemist69 joined #nim
12:17:22*adeohluwa joined #nim
12:23:20*yglukhov quit (Remote host closed the connection)
12:27:02*adeohluwa quit (Remote host closed the connection)
12:32:56Araqvlad1777d: foresight, maybe Nimble wants to run su/sudo on its own
12:33:17AraqArrrr: the idea is to use something like
12:33:55Araqif detectOs(Ubuntu): foreignDep("foo-dev") elif ...: else: foreignDep("default")
12:34:38Araqin your nimble file
12:35:26Araqand often the package names are indeed identical
12:37:22FromGitter<timeyyy> I'm looking into generating backends with nim, the tutorial refers to the `--header` command but it seems that will be removed? Will there be a replacement?
12:37:52zevlghey guys, is it possible to create async iterators in nim?
12:38:28dom96zevlg: good question. What is your use case?
12:38:55dom96An async proc gets transformed into an iterator, so maybe you can use that to your advantage
12:39:48zevlgI have an http client, which produces data in async manner .. I want to write code like "for chunk in http_client.chunks_iterator: do_stuff_with chunk"
12:40:06ArrrrI think is better to pass (packetManager, packetName) and let nimble detect it that exists. That way the programmer doesn't have to deal with os stuff and ifs and whatnot
12:40:33AraqArrrr: but then you cannot guess the package name
12:40:44ArrrrOr well, in case a packet has the same name always, let also a default name
12:41:00Araqwhich is often feasible, esp if Nimble only produces some nice output for it anyway
12:41:31ArrrrYou are right, but i think you won't be able to change that. How can nimble detect the name anyway?
12:41:40ArrrrSometimes is just add -dev, but what if
12:43:04ArrrrThe way i say, it looks more data-oriented. "Here you are, leave me alone!!1!"
12:43:31Araqthe data-oriented approach is less flexible, look at my first proposal
12:44:04AraqI introduced conditions like 'ubuntu', 'others' but you cannot come up with your own conditions
12:44:32Araqnor can you be DRY
12:45:16AraqforeignDep(ubuntu|debian: "foo-dev") # ah, so we reinvented Nim's 'or' operator
12:45:48dom96zevlg: I guess you want async streams, which are not supported yet.
12:46:19Araqwhen designing DSLs you should reuse what the language already provides, Nim already has 'if', 'or', 'not', 'and'
12:46:51ArrrrI think the developer doesn't care whether you are on windows, linux, apt or yum. Simply wants to give a list of dependencies and let the program find out which one to use.
12:47:01Araqexactly
12:47:03dom96zevlg: You could pass in an async callback to your chunks proc and call it for each chunk.
12:47:23ArrrrThen, why does the developer have to care if the script will or not run under windows?
12:47:45zevlgdom96: yeah sure, but that is exactly what I want to avoid :)
12:47:58Araqbecause we lack a huge knowledge database of how to translate abstract package names into concrete package names
12:48:28Araqand that's beyond what Nimble can offer.
12:48:55dom96zevlg: only way is to implement the support for async streams in our stdlib, which I would be very grateful for :)
12:48:58Araqso the Nimble package writer needs to help.
12:49:27FromGitter<andreaferretti> i have been looking for async streams as well, to support chunked responses in rosencrantz
12:49:32FromGitter<andreaferretti> but they're not there yet
12:49:53zevlgdom96: do you have any vision/ideas how this can be done ?
12:50:14ArrrrThis is how i understand it http://pastebin.com/xPjewjH0
12:50:39AraqArrrr: but maybe instead of "detectOS" we should have a "detectPackageManager"
12:51:07ArrrrYeah, something like that.
12:51:09dom96zevlg: Haven't thought about it that much. I think some research would be good to see how it's done in other languages.
12:51:29vlad1777dAraq, but Debian\Mint\Ubuntu have apt and have different package names
12:52:36vlad1777dthat belongs, I think, to other distributives too
12:52:40federico3vlad1777d: Debian and Ubuntu have the same names
12:53:09*byte512 joined #nim
12:54:02vlad1777dfederico3, for example, apt in Mint is Python script, written by Mint developers, in Ubuntu\Debian it is binary, written by Debian developers. They have different commands.
12:54:29vlad1777dPackage MDM in Linux Mint contains display manager, in Debian it contains some tools
12:54:54federico3vlad1777d: I wrote "Debian and Ubuntu" :)
12:55:51vlad1777dfederico3, ah, ok. But there could be problems with versions. But maybe that must be on the shoulders of user.
12:56:04federico3however what matters for choosing the right pkg name (and minimum version) is the (OS, distribution) pair rather than the name of the pkg installer
12:56:24ArrrrOn the other hand is right that for some cases you actually need to know which OS you are, for example if no spm exists or you can only download the dll/so from a webpage. I think that case is important.
12:56:27ArrrrAs a windower i mean.
12:56:59Araqdom96, zevlg I recall seeing an async stream implementation somewhere...
12:57:32dom96oh yeah, I think zielmicha created one in his reactor library. cheatfate might also have one.
12:57:38renesachttps://www.freedesktop.org/software/PackageKit/
12:58:06cheatfatei dont have stream implementation
12:58:14zevlgAraq: this one? https://github.com/zielmicha/reactor.nim/
12:58:20renesacdom96: I already said that nimble is resembling ever more 0install, you should look at them to see how they solved those problems
12:58:20cheatfatebecause it too hard to make a stream api which satisfy everybody
12:58:21renesachttp://0install.net/
12:58:34cheatfatereactor.nim don't have support for windows
12:59:23Araqzevlg: maybe, I can't remember.
13:00:12FromGitter<andreaferretti> I have the hunch that streams should be implementable in a more lightweight manner
13:00:27FromGitter<andreaferretti> given that async is already implemented on top of iterators
13:00:28renesac"The actual nuts-and-bolts distro tool (dnf, apt, etc) is used by PackageKit using compiled and scripted helpers. PackageKit isn't meant to replace these tools, instead providing a common set of abstractions that can be used by standard GUI and text mode package managers. "
13:01:12renesac"Formally, PackageKit is a D-Bus abstraction layer that allows the session user to manage packages in a secure way using a cross-distro, cross-architecture API. "
13:01:26FromGitter<andreaferretti> somehow async operations must inform some scheduler that the data has arrived
13:01:50FromGitter<andreaferretti> but I am not sure how this can be translated into iterators calling each other
13:02:19FromGitter<andreaferretti> anyway, if this can be done once, why cannot it be done more than once
13:02:47dom96One idea to implement async streams might be: FutureStream[T] type with a `write` proc, the `yield` in {.async.} iterators gets transformed into FutureStream.write(...)
13:02:59dom96when `write` is called the future's callback is called also
13:03:12dom96or perhaps it has a separate callback
13:03:23Araqcheatfate: support for Windows or not, it's worthwhile to look at its streams implementation
13:03:45dom96Just a rough idea, probably missing many pieces.
13:04:43Araqrenesac: PackageKit itself would be another dependency?
13:04:52Araqwhat do you propose?
13:04:53renesacto nimble, yes
13:06:10vlad1777dI think that base on checking Distributive is better than base on checking package manager. There could be specific features in different distributives.
13:07:05dom96renesac: We could also use pacman's common base.
13:07:36dom96But we already have much of its functionality implemented, so I don't see the point.
13:07:37Araqall I wanted was 'nimble install blas'
13:07:59Araqnimble: run 'apt-get install libblas-dev' to finish the installation
13:08:36Araqif the packager happens to knew this for my distro
13:08:46Araq*know
13:09:09ArrrrI think that's the simplest approach and you have almost implemented it.
13:09:11FromGitter<andreaferretti> btw, make sure to use openblas! :-)
13:09:22Araqa modest improvement, let's not overdesign this
13:09:25FromGitter<andreaferretti> default blas is not that great
13:09:43ArrrrBut i don't like how blas is licensed.
13:09:48Arrrr*openblas
13:09:52vlad1777dThat's good. Because it does not "force" installation of libraries in system
13:10:52vlad1777dUser will just copy-paste that into terminal if he wants
13:11:56Araqyeah exactly.
13:12:04Arrrrfrom algorithms import sort
13:12:13Arrrr>"well, let me teach you how to implement bubblesort ..."
13:12:15Araqlater nimble can get a '--trust' switch to do it automatically :P
13:12:23renesacok, that way nimble will not have to deal with different error apis of the different package managers
13:12:41renesacand some package managers may lead you to the correct package name if you try wrong ones
13:13:02renesacor let the user search the internet for the correct package name for some package in his distro
13:14:55renesacpackage kit would be useful if nimble wanted to install those packages for the user, w/o reimplementing package kit functionality or making it a half-backed solution that fails in any non-tested combination (nim comunity is made of a small number of excentric people, it will be common...)
13:16:43vlad1777dOr instead of '--trust' it could be called '--auto' or '--autoinstall'
13:19:43ArrrrI don't know, that's weird. You don't need '--trust' to allow "staticExec rm -rf /"
13:19:52ArrrrDoing things by hand, that's overrated.
13:20:04Araq--trust was not a serious proposal
13:20:39Araqchoose any name that makes sense, maybe detect if I used 'sudo nimble'
13:20:47ArrrrHaha.
13:22:06dom96Every package manager allows arbitrary code execution, right?
13:22:25Araqafaik, yes.
13:22:26dom96I'm surprised that rogue packages which do execute something like "rm -rf /" don't happen.
13:23:18renesacdom96: every native package manager, I guess yes
13:23:27renesactheir repositories are curated
13:23:44renesacwell, there are ppas and .debs you can download from the internet in ubuntu for example
13:23:50*yglukhov joined #nim
13:23:51renesacbut you do that at your own risk
13:24:12renesac0install where everything is from unkown sites on the internet runs sandboxed
13:24:21dom96I guess any application that you run could potentially delete all your files
13:24:25dom96That's a bit scary
13:24:31def-dom96: it does happen in custom installer scripts though: https://github.com/valvesoftware/steam-for-linux/issues/3671
13:24:40renesacand w/o root
13:24:56dom96def-: ahh yes, I remember reading about that.
13:25:10renesacyeah, not running with root isn't that important in terms of deleting things
13:25:23renesacas any user can do rm -rf ~/
13:26:10renesacit is in terms of installing invisible spyware, etc
13:28:27*yglukhov quit (Ping timeout: 265 seconds)
13:28:49renesacby the way, I want to be able to run nimble in a server where I don't have root for example
13:29:01AraqI'm more concerned that my nim compiler inserts backdoors into my nim compiler so that 'login' is miscompiled to grant me access to every machine
13:29:09Araq:P
13:29:51renesacso packages can't just assume I can use the native package manager, they must always at least provide instructions to gather everything in the user directory
13:29:56Araqthat every single program can upload or remove my home dir doesn't concern me.
13:30:42renesacthis root access thing makes more sense in servers
13:30:51renesacthan in home computers
13:31:06Araqit makes absolute no sense for home computers :-)
13:31:18dom96Araq: http://i.imgur.com/XS5LK.gif :P
13:31:38renesacsingle user home computers
13:31:56Araqa my favourite nitpick: the OS asks me about my password
13:32:25Araqwtf? do you think I forgot my password?
13:32:52Araqwhy not only ask me for su rights via a mouse/key press?
13:33:20renesacwhat is a mouse?
13:33:21*CcxWrk quit (Ping timeout: 268 seconds)
13:33:22renesac:P
13:33:44renesacyou can configure sudo to not ask for the password, I think
13:34:06renesachttps://xkcd.com/1200/ <-- relevant xkcd
13:34:36Araqback to topic: renesac yeah I am aware and my proposal handles that too, since it only echos what I might want to do :-)
13:34:40federico3not so relevant
13:35:03*CcxWrk joined #nim
13:35:04renesacyeah, I liked that echo proposal
13:39:26*renesac is now known as renesac-away
13:39:47taotetekI'm working on a low level nim binding for a c lib I work on (low level == 1 to 1 correspondence between nim proc / c function) - once that's working would it be a typical / desirable thing to wrap that with a "more nim like" api?
13:40:19taotetekperhaps wrap c calls that use return codes to denote errors with procs that throw exceptions on error etc?
13:44:49*yglukhov joined #nim
13:46:27*Matthias247 quit (Read error: Connection reset by peer)
13:50:54dom96taotetek: yep, that's exactly what should be done. A close-to-c Nim wrapper, then a higher level Nim module that uses this wrapper.
14:00:42cheatfatemaybe its better to rewrite everything using nim?
14:05:40*Arrrr quit (Ping timeout: 265 seconds)
14:09:22Araqtimeyy: there is no replacement planned, the header file needs to be written by hand or via some other tool
14:16:41*chemist69 quit (Ping timeout: 260 seconds)
14:25:10*chemist69 joined #nim
14:31:31taotetekcheatfate: one of the reasons I am enjoying nim is the wonderful C integration - I'm not really up for rewriting a library 130 people have worked together on for years
14:32:07taotetekdom96: ok cool that's the direction I'm headed
14:32:07*azur_kind quit (Read error: Connection reset by peer)
14:32:53taotetekdom96: eventually we'll add support to nim for our code generator that generates our bindings and just auto generate the low level wrapper, but for now I'm learning a lot doing things by hand.
14:33:04cheatfatetaotetek, you never mentioned size of library and number of people worked on it, so my proposal was normal until now
14:33:07taoteteks/support to/support for
14:34:42taotetekcheatfate: understandable and no worries - my main interest in nim at the moment is working my way towards providing some nice DSLs for some libraries I work with
15:08:06*Sentreen_ quit (Quit: WeeChat 1.4)
15:11:20*Sentreen joined #nim
15:14:13*yglukhov quit (Remote host closed the connection)
15:23:16*devted joined #nim
15:30:19*yglukhov joined #nim
15:39:35*yglukhov quit (Remote host closed the connection)
15:45:02*yglukhov joined #nim
15:58:50*pie_ joined #nim
15:59:44*pie_ quit (Changing host)
15:59:44*pie_ joined #nim
16:06:54dom96Araq: thank you for the ability to write `import system except TResult` :)
16:10:04*Jesin joined #nim
16:26:26*chemist69 quit (Ping timeout: 246 seconds)
16:31:02*chemist69 joined #nim
16:31:10*Andris_zbx quit (Remote host closed the connection)
16:35:36*yglukhov quit (Remote host closed the connection)
16:41:34*yglukhov joined #nim
16:42:42dom96Anybody bored and want to code some stuff in Nim?
16:42:42dom96This issue shouldn't be too difficult: https://github.com/nim-lang/nimble/issues/284
16:44:45euantorUsing that API would require an API key to be embedded in Nimble surely? The API key would then be exposed and possibly abused?
16:45:11dom96we currently ask the user to create their own token and input it
16:45:35euantorYep, but they won't have write access to the `nim-lang/nimble` repository
16:45:48euantorSo it would still need to be forked, then the file updated, then a PR submitted
16:46:10dom96yes
16:46:30euantorUnless that API does that automatically for users without web access like their web UI does
16:47:09dom96I believe it does
16:47:58euantorSO it needs to use the API to get the content of the file, modify it, then use the API to submit a change
16:48:18dom96yes
16:48:30dom96except the content of the file can be retrieved without the API
16:49:10euantorYes, but you need to know the SHA of the file to update it ;)
16:49:49euantorWHich you get when you use the API get contents: https://developer.github.com/v3/repos/contents/#get-contents
16:50:02dom96why?
16:50:20dom96Isn't "master" enough?
16:50:22euantorLook on the docs to update a file:
16:50:29euantorhttps://www.irccloud.com/pastebin/JZnhog7z/
16:50:41euantorSpecifically: `sha string Required. The blob SHA of the file being replaced.`
16:53:47dom96oh well, still easier than cloning manually
16:54:05dom96euantor: does this mean you're volunteering to implement this? :D
16:54:30euantorDepends on whether I'm at work tomorrow or not, which I don't yet know
16:56:35*Trustable joined #nim
17:07:10*gokr quit (Ping timeout: 250 seconds)
17:17:30FromGitter<Izrab> Hello :)
17:18:49FromGitter<Izrab> I have some questions about Nim language
17:19:15FromGitter<Izrab> It is a strongly typed language or both static and strong?
17:20:48vlad1777dstatic, about strong - don't know )
17:21:44*brson joined #nim
17:26:06FromGitter<Izrab> Hello?
17:31:35Araqlzrab: It's strongly typed and statically typed.
17:32:40FromGitter<Varriount> Although generics, templates, and macros lessen the limitations that such a type scheme usually enforces.
17:32:58*yglukhov quit (Remote host closed the connection)
17:37:39*yglukhov joined #nim
17:46:46*kier quit (Ping timeout: 258 seconds)
17:57:04*kier joined #nim
18:04:59*eizua quit (Quit: Leaving)
18:12:34*nsf quit (Quit: WeeChat 1.6)
18:21:44*Snircle quit (Quit: Textual IRC Client: www.textualapp.com)
18:36:19*space-wizard joined #nim
18:37:49*space-wizard quit (Client Quit)
18:41:00*space-wizard joined #nim
18:47:26*acidx_ is now known as acidx
18:48:25*yglukhov quit (Remote host closed the connection)
18:50:43*yglukhov joined #nim
18:55:00*Matthias247 joined #nim
18:56:00*yglukhov quit (Remote host closed the connection)
19:00:43*djellemah quit (Quit: Leaving)
19:01:03*yglukhov joined #nim
19:01:29*yglukhov quit (Remote host closed the connection)
19:09:59euantordom96: looked at the GitHub API further. We need to use the API to create a fork, then edit the file on the fork create a pull request
19:10:36dom96:/
19:10:39dom96That's what we already do
19:10:42euantorYep
19:10:56euantorThe only thing that it will save is having to check it out locally
19:14:55*nsf joined #nim
19:16:10dom96that's something at least
19:16:48euantorYeah, I'll look at it properly tomorrow and see how easy it'll be to implement
19:20:47AraqI hate our travis tester sometimes
19:20:55AraqTest "tests/cpp/tdont_init_instantiation.nim" in category "cpp"
19:20:57AraqFailure: reExitcodesDiffer
19:20:58AraqExpected:
19:21:00Araqexitcode: 0
19:21:01AraqGotten:
19:21:03Araqexitcode: 1
19:21:04AraqOutput:
19:21:06AraqTraceback (most recent call last)
19:21:07Araqtdont_init_instantiation.nim(28) tdont_init_instantiation
19:21:09Araqtdont_init_instantiation.nim(26) foo
19:21:10AraqSIGILL: Illegal operation.
19:21:12Araqthe test works for me on 3 OSes
19:21:40dom96maybe it's their sandbox screwing it up
19:22:13AraqI'll disable it, chances of a regression are slim anyway
19:31:57*rokups quit (Quit: Connection closed for inactivity)
20:13:13FromGitter<Varriount> Sigh. A new Rust version has come out... apparently with a shiny new WebAssembly backend.
20:13:46Araqyummy
20:14:17AraqNim's future is not in WebAssembly, it's in superior C++ interop. IMO.
20:15:29AraqI recently found a way to make my codegen AST based without rewriting it :-)
20:16:00FromGitter<Varriount> @Araq Hm. But the future of applications seems to be moving towards the web.
20:16:07*bjz joined #nim
20:16:46Araqyou can count on LLVM getting WebAssembly support anyway
20:17:35*djellemah joined #nim
20:17:49dom96I would assume that's how Rust got support for it
20:17:56dom96via LLVM
20:18:32FromGitter<Varriount> Why is it that every time I see a mention of Rust, I get frustrated, but not when I see Swift or Go mentioned?
20:20:42Araqdunno, but I like Rust's concepts much more than Swift's or Go's. Haven't used it in practice though
20:27:27AraqI hope it's eventually used to create new memory safe kernels.
20:28:24CalinouRust syntax is horrible :(
20:28:28Araqeverything that gets us away from this C bullshit is a step forward
20:28:55Araqtypedef struct Foo Foo;
20:29:10FromGitter<Varriount> @Calinou I must admit that the syntax is rather hard on the eyes.
20:29:28Calinouand it'll never change
20:29:32FromGitter<Varriount> Then again, maybe C++/C programmers are used to such masochism
20:30:45FromGitter<Varriount> Actually, that's being unfair. Rust syntax is better than C++ at least. No one likes dealing with that wierd mixture of macros and templates and operator symbols.
20:31:28Araqthe C
20:31:38Araq++ gyus blame C for all the cruft.
20:32:01Araq(and I agree.)
20:33:28dom96Varriount: I dunno about that: https://news.ycombinator.com/item?id=13239844
20:33:50dom96Probably an extreme example, but my god, too many unwraps()
20:37:20*space-wizard quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:37:34Araqyeah but that's not even the worst of it. Much worse is the fact that I don't know where 'unwrap' was declared.
20:37:38Araqshould be
20:37:52Araqsomething.somewhere.module.unwrap() everywhere
20:38:36Araq<irony off>
20:39:48dom96lol
21:24:27*kulelu88 joined #nim
21:44:21*byte512 quit (Ping timeout: 265 seconds)
21:52:05*Trustable quit (Remote host closed the connection)
21:52:21*bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
21:55:53*space-wizard joined #nim
21:57:48*gokr joined #nim
22:01:20*bjz joined #nim
22:35:55*bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
22:44:02*Jesin quit (Quit: Leaving)
22:47:06*bjz joined #nim
22:58:12*kulelu88 quit (Quit: Leaving)
23:00:01*bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
23:08:53*kulelu88 joined #nim
23:09:49*bjz joined #nim
23:13:19*vendethiel joined #nim
23:14:02*space-wizard quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:14:08*devted quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
23:15:07*devted joined #nim
23:19:50*devted quit (Ping timeout: 264 seconds)
23:27:18*pie_ quit (Ping timeout: 265 seconds)
23:27:33*chemist69 quit (Ping timeout: 258 seconds)
23:32:28*chemist69 joined #nim
23:34:05*nsf quit (Quit: WeeChat 1.6)
23:34:59*Matthias247 quit (Read error: Connection reset by peer)
23:42:34*synshroud quit (Quit: ZNC 1.6.3 - http://znc.in)
23:44:16*synshroud joined #nim
23:51:30*bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
23:53:17*themagician quit ()
23:57:47*bjz joined #nim