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:51 | Arrrr | The 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:35 | Araq | Arrrr: ok. |
08:14:46 | Araq | :-) |
08:15:49 | vlad1777d | It's so implicit =) |
08:15:53 | Araq | for this you need a macro then. |
08:16:20 | * | lenstr quit (Ping timeout: 250 seconds) |
08:16:28 | Araq | choose ast, parser, lexer # import randomly |
08:16:58 | vlad1777d | no, it's not even implicit, it looks unclear ) |
08:30:48 | Arrrr | Random import, you are taking it to the next level |
08:31:12 | Arrrr | nethack for devs |
08:45:54 | * | yglukhov joined #nim |
08:50:57 | * | Andris_zbx joined #nim |
08:55:48 | FromGitter | <vegansk> Hi to all! |
08:55:51 | * | yglukhov quit (Ping timeout: 268 seconds) |
08:56:44 | FromGitter | <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:45 | FromGitter | <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:18 | Araq | vegansk: I don't know. as far as I know, dynlib support is part of the test suite |
09:33:35 | Araq | and thus should simply work (tm) |
09:52:51 | * | gokr joined #nim |
09:52:57 | FromGitter | <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:41 | FromGitter | <vegansk> And yes, the test works, untill you add ``--threads:on`` switch: |
09:54:59 | FromGitter | <vegansk> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=585ba2f2e7bdfe4e2985f824] |
09:57:45 | Araq | ah ok so we don't use it with --threads:on |
09:57:50 | Araq | definitely an issue |
10:00:43 | FromGitter | <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:09 | FromGitter | <rivasiv> I actually converted macro with \def directive do I need to do something additionally ? |
10:02:56 | FromGitter | <Araq> well #def is a c2nim macro |
10:03:18 | FromGitter | <Araq> you don't call the macro, hence no output |
10:06:34 | FromGitter | <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:51 | FromGitter | <Araq> yes |
10:11:34 | FromGitter | <rivasiv> thanks |
10:12:39 | FromGitter | <andreaferretti> about the discussion on supporting native package managers in nimble |
10:12:50 | FromGitter | <andreaferretti> what would be a use case? |
10:12:59 | dom96 | nimble install gtk |
10:13:10 | dom96 | ./gtk-app -> could not import libgtk.so |
10:13:46 | FromGitter | <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:58 | FromGitter | <andreaferretti> and those are mostly installed with the native package manager anyway |
10:14:11 | FromGitter | <andreaferretti> what I mean is |
10:14:38 | FromGitter | <andreaferretti> right now, one can *depend* on, say, the gtk library (as opposed to installing it globally) |
10:14:51 | FromGitter | <andreaferretti> that dependency is a local thing |
10:15:04 | FromGitter | <andreaferretti> it only affects the project that declares that dependency |
10:15:30 | FromGitter | <andreaferretti> if libraries start installing things globally as a consequence of being depended upon |
10:15:36 | FromGitter | <andreaferretti> all hell breaks loose |
10:16:07 | FromGitter | <andreaferretti> end programs (say Aporia) may in fact depend on native libraries |
10:16:29 | dom96 | yes, well, it will likely just be a message. |
10:16:31 | FromGitter | <andreaferretti> but maybe the right way would to simplify the creation of an actual deb/rpm package for end programs |
10:16:36 | FromGitter | <Araq> well I had the problem with testing some math library depending libblas or something |
10:16:42 | dom96 | Nimble won't be installing any native packages. |
10:16:51 | FromGitter | <andreaferretti> ah ok |
10:16:52 | FromGitter | <Araq> it's not just for apps |
10:16:56 | vlad1777d | andreaferretti, this could be decided by "optional" installing of dependencies in system, not forced |
10:17:10 | FromGitter | <andreaferretti> what I really would like to see |
10:17:22 | FromGitter | <Araq> but yeah, what dom said, it should just be a message what to run to install further deps |
10:17:26 | dom96 | yeah, we can do what vlad1777d said in the future as well |
10:17:29 | FromGitter | <andreaferretti> is integration with some tool that is able to install c dependencies locally |
10:18:11 | FromGitter | <andreaferretti> such as https://conan.io/ |
10:18:20 | FromGitter | <andreaferretti> (and of course with npm :-P) |
10:18:44 | FromGitter | <andreaferretti> without having to mess with the globally installed stuff |
10:19:26 | dom96 | There is too many package managers out there to support :P |
10:19:51 | dom96 | You will be able to display "Make sure to run npm install blah so that this library functions properly. |
10:19:58 | dom96 | or similar |
10:20:24 | vlad1777d | andreaferretti, 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:40 | Arrrr | can you use http stuff from nimscript? |
10:21:08 | FromGitter | <andreaferretti> yeah flatpak would be nice :-) |
10:21:19 | Araq | Arrrr: hell no :-) |
10:21:36 | FromGitter | <andreaferretti> btw, I have been toying with the idea of writing some nimscript fucntions and templates |
10:21:38 | Araq | you can staticExec curl or wget or something |
10:21:40 | vlad1777d | yes, of course, the better way - to display message with dependencies in systems with unsupported package managers to user to install them manually |
10:21:46 | FromGitter | <andreaferretti> to declare js dependencies for js projects |
10:21:53 | Arrrr | I see |
10:21:57 | FromGitter | <andreaferretti> and them generating a package.json |
10:22:08 | FromGitter | <andreaferretti> and running npm in nimble tasks |
10:22:14 | FromGitter | <andreaferretti> but I did notfind the time yet |
10:22:45 | Araq | Arrrr: nimble can register new builtins though and support http via NimScript |
10:23:25 | Araq | but the compiler should not support it out of the box |
10:23:42 | dom96 | A nimble builtin for downloading things will probably be useful |
10:24:15 | Arrrr | Could be useful, for example to have a task called "nim newproject $Path" that creates a project and the required dlls, for example |
10:25:36 | Arrrr | "nim newproject gtk ../YoutubeViewer/" |
10:26:13 | dom96 | I don't know what "the required dlls" entails, but `nimble init` is pretty much this. |
10:27:14 | Arrrr | But i understand nimble init is the command used to build a standalone project |
10:27:49 | Arrrr | If 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:35 | Araq | the API seems hard |
10:30:48 | Araq | foreignDep(ubuntu: "libblas-dev", windows: "blas", others: "libblas") |
10:31:39 | dom96 | I still don't understand why `nimble init` couldn't take care of whatever functionality you have in mind for `newproject`. |
10:31:47 | Araq | er make that |
10:31:58 | Araq | foreignDep(ubuntu = "libblas-dev", windows = "blas", others ="libblas") |
10:32:06 | Araq | and foreignDep a macro. |
10:32:11 | Araq | any better ideas? |
10:32:44 | * | Arrrr quit (Ping timeout: 256 seconds) |
10:33:13 | Araq | the macro knows about lots of Linux distros and errors if you use an unsupported OS |
10:34:00 | Araq | and it knows how to install packages ("apt-get install", "yum banana", ...) |
10:34:22 | Araq | for OSX it should use 'brew' |
10:34:38 | Araq | for Windows, who knows ... |
10:34:40 | * | Arrrr joined #nim |
10:35:34 | Arrrr | Well, init is a good name too. |
10:35:53 | Arrrr | On windows you'll need to download and unzip. |
10:36:07 | Arrrr | usually |
10:36:40 | Araq | for 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:19 | Araq | well if we choose later to run these commands instead of echoing them, the abstraction becomes useful |
10:38:42 | Araq | so. my proposal: add these 2 builtins to Nimble's Nimscript support |
10:39:31 | * | Matthias247 joined #nim |
10:39:55 | dom96 | Araq: Make an issue ;) |
10:40:37 | Araq | only if I get no objections here |
10:42:24 | Araq | https://en.wikipedia.org/wiki/List_of_software_package_management_systems#Linux |
10:43:18 | Araq | the 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:52 | euantor | That list is hiding the fact that RPM has `yum`, `dnf`, `zypper`, `urpmi` and probably others based upon it depending on distribution |
10:45:24 | Araq | ah good catch |
10:47:13 | euantor | And `apt`, `apt-get` and `aptitude` are hidden under a single entry |
10:47:31 | euantor | And no obvious mention of Gentoo's `emerge` |
10:48:18 | Araq | you just volunteered to implement this, right? |
10:49:05 | euantor | Well, 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:33 | euantor | And of course the Mac has `brew` and `macports`, and on BSD system you have the ports tree |
10:53:19 | dom96 | bbl |
10:53:36 | Arrrr | Support 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:27 | vlad1777d | All 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:11 | euantor | ^ THat sounds like a volunteer to me :) |
11:04:17 | Arrrr | haha |
11:13:01 | * | yglukhov joined #nim |
11:14:34 | * | yglukhov quit (Remote host closed the connection) |
11:23:16 | * | yglukhov joined #nim |
11:38:53 | vlad1777d | =) |
11:42:51 | vlad1777d | euantor, 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:14 | Araq | euantor: https://github.com/nim-lang/nimble/pull/283 |
11:43:31 | Araq | add Linux distros and their package managers to this scheme |
11:44:09 | Araq | dom96: too lazy to write an issue so I started with a PR |
11:44:19 | euantor | Alright, I'll see what I can do |
11:44:46 | Araq | bbl |
11:50:56 | dom96 | Araq: A good start :) |
11:53:02 | Arrrr | Do packets share the same name across package managers? |
11:53:47 | * | Kingsquee joined #nim |
11:54:19 | Arrrr | Otherwise you could define another enum for pms: 'foreignDep(PM.APT, "gtk")' |
11:55:10 | * | Kingsquee quit (Client Quit) |
11:55:39 | dom96 | they don't |
12:02:21 | * | Snircle joined #nim |
12:02:52 | vlad1777d | Araq, 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:56 | Araq | vlad1777d: foresight, maybe Nimble wants to run su/sudo on its own |
12:33:17 | Araq | Arrrr: the idea is to use something like |
12:33:55 | Araq | if detectOs(Ubuntu): foreignDep("foo-dev") elif ...: else: foreignDep("default") |
12:34:38 | Araq | in your nimble file |
12:35:26 | Araq | and often the package names are indeed identical |
12:37:22 | FromGitter | <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:52 | zevlg | hey guys, is it possible to create async iterators in nim? |
12:38:28 | dom96 | zevlg: good question. What is your use case? |
12:38:55 | dom96 | An async proc gets transformed into an iterator, so maybe you can use that to your advantage |
12:39:48 | zevlg | I 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:06 | Arrrr | I 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:33 | Araq | Arrrr: but then you cannot guess the package name |
12:40:44 | Arrrr | Or well, in case a packet has the same name always, let also a default name |
12:41:00 | Araq | which is often feasible, esp if Nimble only produces some nice output for it anyway |
12:41:31 | Arrrr | You are right, but i think you won't be able to change that. How can nimble detect the name anyway? |
12:41:40 | Arrrr | Sometimes is just add -dev, but what if |
12:43:04 | Arrrr | The way i say, it looks more data-oriented. "Here you are, leave me alone!!1!" |
12:43:31 | Araq | the data-oriented approach is less flexible, look at my first proposal |
12:44:04 | Araq | I introduced conditions like 'ubuntu', 'others' but you cannot come up with your own conditions |
12:44:32 | Araq | nor can you be DRY |
12:45:16 | Araq | foreignDep(ubuntu|debian: "foo-dev") # ah, so we reinvented Nim's 'or' operator |
12:45:48 | dom96 | zevlg: I guess you want async streams, which are not supported yet. |
12:46:19 | Araq | when designing DSLs you should reuse what the language already provides, Nim already has 'if', 'or', 'not', 'and' |
12:46:51 | Arrrr | I 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:01 | Araq | exactly |
12:47:03 | dom96 | zevlg: You could pass in an async callback to your chunks proc and call it for each chunk. |
12:47:23 | Arrrr | Then, why does the developer have to care if the script will or not run under windows? |
12:47:45 | zevlg | dom96: yeah sure, but that is exactly what I want to avoid :) |
12:47:58 | Araq | because we lack a huge knowledge database of how to translate abstract package names into concrete package names |
12:48:28 | Araq | and that's beyond what Nimble can offer. |
12:48:55 | dom96 | zevlg: only way is to implement the support for async streams in our stdlib, which I would be very grateful for :) |
12:48:58 | Araq | so the Nimble package writer needs to help. |
12:49:27 | FromGitter | <andreaferretti> i have been looking for async streams as well, to support chunked responses in rosencrantz |
12:49:32 | FromGitter | <andreaferretti> but they're not there yet |
12:49:53 | zevlg | dom96: do you have any vision/ideas how this can be done ? |
12:50:14 | Arrrr | This is how i understand it http://pastebin.com/xPjewjH0 |
12:50:39 | Araq | Arrrr: but maybe instead of "detectOS" we should have a "detectPackageManager" |
12:51:07 | Arrrr | Yeah, something like that. |
12:51:09 | dom96 | zevlg: 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:29 | vlad1777d | Araq, but Debian\Mint\Ubuntu have apt and have different package names |
12:52:36 | vlad1777d | that belongs, I think, to other distributives too |
12:52:40 | federico3 | vlad1777d: Debian and Ubuntu have the same names |
12:53:09 | * | byte512 joined #nim |
12:54:02 | vlad1777d | federico3, 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:29 | vlad1777d | Package MDM in Linux Mint contains display manager, in Debian it contains some tools |
12:54:54 | federico3 | vlad1777d: I wrote "Debian and Ubuntu" :) |
12:55:51 | vlad1777d | federico3, ah, ok. But there could be problems with versions. But maybe that must be on the shoulders of user. |
12:56:04 | federico3 | however 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:24 | Arrrr | On 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:27 | Arrrr | As a windower i mean. |
12:56:59 | Araq | dom96, zevlg I recall seeing an async stream implementation somewhere... |
12:57:32 | dom96 | oh yeah, I think zielmicha created one in his reactor library. cheatfate might also have one. |
12:57:38 | renesac | https://www.freedesktop.org/software/PackageKit/ |
12:58:06 | cheatfate | i dont have stream implementation |
12:58:14 | zevlg | Araq: this one? https://github.com/zielmicha/reactor.nim/ |
12:58:20 | renesac | dom96: I already said that nimble is resembling ever more 0install, you should look at them to see how they solved those problems |
12:58:20 | cheatfate | because it too hard to make a stream api which satisfy everybody |
12:58:21 | renesac | http://0install.net/ |
12:58:34 | cheatfate | reactor.nim don't have support for windows |
12:59:23 | Araq | zevlg: maybe, I can't remember. |
13:00:12 | FromGitter | <andreaferretti> I have the hunch that streams should be implementable in a more lightweight manner |
13:00:27 | FromGitter | <andreaferretti> given that async is already implemented on top of iterators |
13:00:28 | renesac | "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:12 | renesac | "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:26 | FromGitter | <andreaferretti> somehow async operations must inform some scheduler that the data has arrived |
13:01:50 | FromGitter | <andreaferretti> but I am not sure how this can be translated into iterators calling each other |
13:02:19 | FromGitter | <andreaferretti> anyway, if this can be done once, why cannot it be done more than once |
13:02:47 | dom96 | One 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:59 | dom96 | when `write` is called the future's callback is called also |
13:03:12 | dom96 | or perhaps it has a separate callback |
13:03:23 | Araq | cheatfate: support for Windows or not, it's worthwhile to look at its streams implementation |
13:03:45 | dom96 | Just a rough idea, probably missing many pieces. |
13:04:43 | Araq | renesac: PackageKit itself would be another dependency? |
13:04:52 | Araq | what do you propose? |
13:04:53 | renesac | to nimble, yes |
13:06:10 | vlad1777d | I think that base on checking Distributive is better than base on checking package manager. There could be specific features in different distributives. |
13:07:05 | dom96 | renesac: We could also use pacman's common base. |
13:07:36 | dom96 | But we already have much of its functionality implemented, so I don't see the point. |
13:07:37 | Araq | all I wanted was 'nimble install blas' |
13:07:59 | Araq | nimble: run 'apt-get install libblas-dev' to finish the installation |
13:08:36 | Araq | if the packager happens to knew this for my distro |
13:08:46 | Araq | *know |
13:09:09 | Arrrr | I think that's the simplest approach and you have almost implemented it. |
13:09:11 | FromGitter | <andreaferretti> btw, make sure to use openblas! :-) |
13:09:22 | Araq | a modest improvement, let's not overdesign this |
13:09:25 | FromGitter | <andreaferretti> default blas is not that great |
13:09:43 | Arrrr | But i don't like how blas is licensed. |
13:09:48 | Arrrr | *openblas |
13:09:52 | vlad1777d | That's good. Because it does not "force" installation of libraries in system |
13:10:52 | vlad1777d | User will just copy-paste that into terminal if he wants |
13:11:56 | Araq | yeah exactly. |
13:12:04 | Arrrr | from algorithms import sort |
13:12:13 | Arrrr | >"well, let me teach you how to implement bubblesort ..." |
13:12:15 | Araq | later nimble can get a '--trust' switch to do it automatically :P |
13:12:23 | renesac | ok, that way nimble will not have to deal with different error apis of the different package managers |
13:12:41 | renesac | and some package managers may lead you to the correct package name if you try wrong ones |
13:13:02 | renesac | or let the user search the internet for the correct package name for some package in his distro |
13:14:55 | renesac | package 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:43 | vlad1777d | Or instead of '--trust' it could be called '--auto' or '--autoinstall' |
13:19:43 | Arrrr | I don't know, that's weird. You don't need '--trust' to allow "staticExec rm -rf /" |
13:19:52 | Arrrr | Doing things by hand, that's overrated. |
13:20:04 | Araq | --trust was not a serious proposal |
13:20:39 | Araq | choose any name that makes sense, maybe detect if I used 'sudo nimble' |
13:20:47 | Arrrr | Haha. |
13:22:06 | dom96 | Every package manager allows arbitrary code execution, right? |
13:22:25 | Araq | afaik, yes. |
13:22:26 | dom96 | I'm surprised that rogue packages which do execute something like "rm -rf /" don't happen. |
13:23:18 | renesac | dom96: every native package manager, I guess yes |
13:23:27 | renesac | their repositories are curated |
13:23:44 | renesac | well, there are ppas and .debs you can download from the internet in ubuntu for example |
13:23:50 | * | yglukhov joined #nim |
13:23:51 | renesac | but you do that at your own risk |
13:24:12 | renesac | 0install where everything is from unkown sites on the internet runs sandboxed |
13:24:21 | dom96 | I guess any application that you run could potentially delete all your files |
13:24:25 | dom96 | That's a bit scary |
13:24:31 | def- | dom96: it does happen in custom installer scripts though: https://github.com/valvesoftware/steam-for-linux/issues/3671 |
13:24:40 | renesac | and w/o root |
13:24:56 | dom96 | def-: ahh yes, I remember reading about that. |
13:25:10 | renesac | yeah, not running with root isn't that important in terms of deleting things |
13:25:23 | renesac | as any user can do rm -rf ~/ |
13:26:10 | renesac | it is in terms of installing invisible spyware, etc |
13:28:27 | * | yglukhov quit (Ping timeout: 265 seconds) |
13:28:49 | renesac | by the way, I want to be able to run nimble in a server where I don't have root for example |
13:29:01 | Araq | I'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:09 | Araq | :P |
13:29:51 | renesac | so 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:56 | Araq | that every single program can upload or remove my home dir doesn't concern me. |
13:30:42 | renesac | this root access thing makes more sense in servers |
13:30:51 | renesac | than in home computers |
13:31:06 | Araq | it makes absolute no sense for home computers :-) |
13:31:18 | dom96 | Araq: http://i.imgur.com/XS5LK.gif :P |
13:31:38 | renesac | single user home computers |
13:31:56 | Araq | a my favourite nitpick: the OS asks me about my password |
13:32:25 | Araq | wtf? do you think I forgot my password? |
13:32:52 | Araq | why not only ask me for su rights via a mouse/key press? |
13:33:20 | renesac | what is a mouse? |
13:33:21 | * | CcxWrk quit (Ping timeout: 268 seconds) |
13:33:22 | renesac | :P |
13:33:44 | renesac | you can configure sudo to not ask for the password, I think |
13:34:06 | renesac | https://xkcd.com/1200/ <-- relevant xkcd |
13:34:36 | Araq | back 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:40 | federico3 | not so relevant |
13:35:03 | * | CcxWrk joined #nim |
13:35:04 | renesac | yeah, I liked that echo proposal |
13:39:26 | * | renesac is now known as renesac-away |
13:39:47 | taotetek | I'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:19 | taotetek | perhaps 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:54 | dom96 | taotetek: 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:42 | cheatfate | maybe its better to rewrite everything using nim? |
14:05:40 | * | Arrrr quit (Ping timeout: 265 seconds) |
14:09:22 | Araq | timeyy: 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:31 | taotetek | cheatfate: 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:07 | taotetek | dom96: ok cool that's the direction I'm headed |
14:32:07 | * | azur_kind quit (Read error: Connection reset by peer) |
14:32:53 | taotetek | dom96: 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:04 | cheatfate | taotetek, you never mentioned size of library and number of people worked on it, so my proposal was normal until now |
14:33:07 | taotetek | s/support to/support for |
14:34:42 | taotetek | cheatfate: 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:54 | dom96 | Araq: 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:42 | dom96 | Anybody bored and want to code some stuff in Nim? |
16:42:42 | dom96 | This issue shouldn't be too difficult: https://github.com/nim-lang/nimble/issues/284 |
16:44:45 | euantor | Using 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:11 | dom96 | we currently ask the user to create their own token and input it |
16:45:35 | euantor | Yep, but they won't have write access to the `nim-lang/nimble` repository |
16:45:48 | euantor | So it would still need to be forked, then the file updated, then a PR submitted |
16:46:10 | dom96 | yes |
16:46:30 | euantor | Unless that API does that automatically for users without web access like their web UI does |
16:47:09 | dom96 | I believe it does |
16:47:58 | euantor | SO 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:18 | dom96 | yes |
16:48:30 | dom96 | except the content of the file can be retrieved without the API |
16:49:10 | euantor | Yes, but you need to know the SHA of the file to update it ;) |
16:49:49 | euantor | WHich you get when you use the API get contents: https://developer.github.com/v3/repos/contents/#get-contents |
16:50:02 | dom96 | why? |
16:50:20 | dom96 | Isn't "master" enough? |
16:50:22 | euantor | Look on the docs to update a file: |
16:50:29 | euantor | https://www.irccloud.com/pastebin/JZnhog7z/ |
16:50:41 | euantor | Specifically: `sha string Required. The blob SHA of the file being replaced.` |
16:53:47 | dom96 | oh well, still easier than cloning manually |
16:54:05 | dom96 | euantor: does this mean you're volunteering to implement this? :D |
16:54:30 | euantor | Depends 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:30 | FromGitter | <Izrab> Hello :) |
17:18:49 | FromGitter | <Izrab> I have some questions about Nim language |
17:19:15 | FromGitter | <Izrab> It is a strongly typed language or both static and strong? |
17:20:48 | vlad1777d | static, about strong - don't know ) |
17:21:44 | * | brson joined #nim |
17:26:06 | FromGitter | <Izrab> Hello? |
17:31:35 | Araq | lzrab: It's strongly typed and statically typed. |
17:32:40 | FromGitter | <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:59 | euantor | dom96: 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:36 | dom96 | :/ |
19:10:39 | dom96 | That's what we already do |
19:10:42 | euantor | Yep |
19:10:56 | euantor | The only thing that it will save is having to check it out locally |
19:14:55 | * | nsf joined #nim |
19:16:10 | dom96 | that's something at least |
19:16:48 | euantor | Yeah, I'll look at it properly tomorrow and see how easy it'll be to implement |
19:20:47 | Araq | I hate our travis tester sometimes |
19:20:55 | Araq | Test "tests/cpp/tdont_init_instantiation.nim" in category "cpp" |
19:20:57 | Araq | Failure: reExitcodesDiffer |
19:20:58 | Araq | Expected: |
19:21:00 | Araq | exitcode: 0 |
19:21:01 | Araq | Gotten: |
19:21:03 | Araq | exitcode: 1 |
19:21:04 | Araq | Output: |
19:21:06 | Araq | Traceback (most recent call last) |
19:21:07 | Araq | tdont_init_instantiation.nim(28) tdont_init_instantiation |
19:21:09 | Araq | tdont_init_instantiation.nim(26) foo |
19:21:10 | Araq | SIGILL: Illegal operation. |
19:21:12 | Araq | the test works for me on 3 OSes |
19:21:40 | dom96 | maybe it's their sandbox screwing it up |
19:22:13 | Araq | I'll disable it, chances of a regression are slim anyway |
19:31:57 | * | rokups quit (Quit: Connection closed for inactivity) |
20:13:13 | FromGitter | <Varriount> Sigh. A new Rust version has come out... apparently with a shiny new WebAssembly backend. |
20:13:46 | Araq | yummy |
20:14:17 | Araq | Nim's future is not in WebAssembly, it's in superior C++ interop. IMO. |
20:15:29 | Araq | I recently found a way to make my codegen AST based without rewriting it :-) |
20:16:00 | FromGitter | <Varriount> @Araq Hm. But the future of applications seems to be moving towards the web. |
20:16:07 | * | bjz joined #nim |
20:16:46 | Araq | you can count on LLVM getting WebAssembly support anyway |
20:17:35 | * | djellemah joined #nim |
20:17:49 | dom96 | I would assume that's how Rust got support for it |
20:17:56 | dom96 | via LLVM |
20:18:32 | FromGitter | <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:42 | Araq | dunno, but I like Rust's concepts much more than Swift's or Go's. Haven't used it in practice though |
20:27:27 | Araq | I hope it's eventually used to create new memory safe kernels. |
20:28:24 | Calinou | Rust syntax is horrible :( |
20:28:28 | Araq | everything that gets us away from this C bullshit is a step forward |
20:28:55 | Araq | typedef struct Foo Foo; |
20:29:10 | FromGitter | <Varriount> @Calinou I must admit that the syntax is rather hard on the eyes. |
20:29:28 | Calinou | and it'll never change |
20:29:32 | FromGitter | <Varriount> Then again, maybe C++/C programmers are used to such masochism |
20:30:45 | FromGitter | <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:28 | Araq | the C |
20:31:38 | Araq | ++ gyus blame C for all the cruft. |
20:32:01 | Araq | (and I agree.) |
20:33:28 | dom96 | Varriount: I dunno about that: https://news.ycombinator.com/item?id=13239844 |
20:33:50 | dom96 | Probably 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:34 | Araq | yeah 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:38 | Araq | should be |
20:37:52 | Araq | something.somewhere.module.unwrap() everywhere |
20:38:36 | Araq | <irony off> |
20:39:48 | dom96 | lol |
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 |