digitalmars.D - Deimos: Consistent structure?
- David Nadlinger (10/10) Nov 20 2011 Hey all,
- Jude Young (6/16) Nov 20 2011 I asked Walter about it and he preferred the modules in the root.
- Jacob Carlborg (10/30) Nov 20 2011 Say that both liblzma and ncurses have a module called "util". What
- Jonathan M Davis (3/34) Nov 20 2011 I completely agree.
- Kapps (3/33) Nov 20 2011 This seems the obvious choice to me. Something like "import
- Jude Young (6/42) Nov 20 2011 Yeah that's the exact same thing I was thinking.
- Jacob Carlborg (6/14) Nov 21 2011 It will work, all modules at the top without a root package will NOT
- Jude Young (29/29) Nov 21 2011 young@Dan-Laptop:~/bin$ mkdir mytest
- Jacob Carlborg (13/42) Nov 21 2011 That assumes ncurses/curses.d contains "module ncurses.curses;" and
- Jude Young (23/68) Nov 21 2011 False. I actually ran the test that I showed you and encountered no
- Jacob Carlborg (38/56) Nov 21 2011 Does that really work? You would need to do "dmd -I." which I think dmd
- Jude Young (2/2) Nov 21 2011 young@Dan-Laptop:~/bin/mytest$ dmd -I/ncurses -I/otherproject test.d
- Walter Bright (6/36) Nov 21 2011 import liblzma.util;
- Jacob Carlborg (8/26) Nov 21 2011 No it's not. Have a look at the curses module in the ncurses repository.
- Walter Bright (2/5) Nov 21 2011 Yeah, that should be fixed.
- Jacob Carlborg (4/11) Nov 21 2011 Yes, thank you. Finally someone understands :)
- Dejan Lekic (2/2) Nov 22 2011 Jacob, if you read my previous posts you will see that I proposed exactl...
- Jacob Carlborg (5/7) Nov 22 2011 Maybe, there was something I didn't like with your proposal if I recall
- Dejan Lekic (16/16) Nov 21 2011 We talked about this on the irc://irc.freenode.org/d IRC channel a lot.....
- mta`chrono (28/28) Nov 21 2011 It would be great if a single include statement in /etc/dmd.conf would
- Dejan Lekic (18/18) Nov 21 2011 Yes. Thanks for reminding us. We discussed this as well on
- Walter Bright (4/8) Nov 21 2011 Deimos is an organization that (if it is successful) will get very large...
- Gour (16/19) Nov 21 2011 We're strongly reconsidering to use D - this time using gtk+ or
- Walter Bright (8/10) Nov 21 2011 All Deimos is is D bindings for popular C libraries. Anything else is ou...
- Gour (11/13) Nov 23 2011 OK. Then I hope Sqlite3 applies?
- Jacob Carlborg (5/8) Nov 21 2011 I don't like this. It will include modules that one may not have any use...
- Dejan Lekic (2/2) Nov 21 2011 Good point Jacob. I did not think about that possibility. Especially if
- Dejan Lekic (4/4) Nov 21 2011 On a second thought... Why would that be a problem? Even if hundreds of
- Gor Gyolchanyan (4/8) Nov 21 2011 Good point. D's imports are nothing like C's includes, which
- Jacob Carlborg (7/11) Nov 21 2011 No, I don't think it's any overhead. But I want this to be handled by a
- Dejan Lekic (6/6) Nov 21 2011 Well, if you carefully read my previous post about module/package struct...
- Martin Nowak (13/24) Nov 21 2011 That's the decision to be made. I'd personally prefer a library/package ...
- Dejan Lekic (18/21) Nov 22 2011 Making "import deimos.ncurses" import everything is just wrong. NCurses
- mta`chrono (20/26) Nov 22 2011 I think in this case "import deimos.ncurses;" should _NOT_ be available.
- Dejan Lekic (5/9) Nov 22 2011 I disagree. There is nothing wrong with "import deimos.ncurses;"
- Martin Nowak (11/38) Nov 22 2011 From /usr/include:
- Dejan Lekic (11/15) Nov 22 2011 True, that is the main reason why we suggested (the IRC discussion I tal...
- Martin Nowak (12/30) Nov 22 2011 Well, implementing
- mta`chrono (4/8) Nov 21 2011 I think your intention to make use of a package manager is implicit
- Jude Young (22/35) Nov 21 2011 Not always gonna work.
Hey all, currently, the 0mq and ncurses Deimos bindings place their modules in the root (both package- and directory-wise), while the liblzma ones use deimos.lzma and deimos.lzma_.*. The actual choice probably doesn't matter at all, but could we maybe pick one and then stick to it (including appropriate documentation of this decision, of course)? In my eyes, consistency would improve the "Just Works"-appeal of Deimos by quite a bit. Thanks, David
Nov 20 2011
On Sun 20 Nov 2011 02:20:18 PM CST, David Nadlinger wrote:Hey all, currently, the 0mq and ncurses Deimos bindings place their modules in the root (both package- and directory-wise), while the liblzma ones use deimos.lzma and deimos.lzma_.*. The actual choice probably doesn't matter at all, but could we maybe pick one and then stick to it (including appropriate documentation of this decision, of course)? In my eyes, consistency would improve the "Just Works"-appeal of Deimos by quite a bit. Thanks, DavidI asked Walter about it and he preferred the modules in the root. Another guy claimed it would lead to namespace clashes but refused to elaborate. There is a lot about Deimos that isn't documented. It'll get there.
Nov 20 2011
On 2011-11-20 22:52, Jude Young wrote:On Sun 20 Nov 2011 02:20:18 PM CST, David Nadlinger wrote:Say that both liblzma and ncurses have a module called "util". What happens if I want to use both of these libraries in the same application. When I do "import util;" which one will the compiler pick? I suggest there is a root package named after the library. If people want a deimos package, that's fine with me as well. But there has to be a package named after the library where all modules should be located, except for, possibly, a module that imports the whole library. -- /Jacob CarlborgHey all, currently, the 0mq and ncurses Deimos bindings place their modules in the root (both package- and directory-wise), while the liblzma ones use deimos.lzma and deimos.lzma_.*. The actual choice probably doesn't matter at all, but could we maybe pick one and then stick to it (including appropriate documentation of this decision, of course)? In my eyes, consistency would improve the "Just Works"-appeal of Deimos by quite a bit. Thanks, DavidI asked Walter about it and he preferred the modules in the root. Another guy claimed it would lead to namespace clashes but refused to elaborate. There is a lot about Deimos that isn't documented. It'll get there.
Nov 20 2011
On Monday, November 21, 2011 08:31:32 Jacob Carlborg wrote:On 2011-11-20 22:52, Jude Young wrote:I completely agree. - Jonathan M DavisOn Sun 20 Nov 2011 02:20:18 PM CST, David Nadlinger wrote:Say that both liblzma and ncurses have a module called "util". What happens if I want to use both of these libraries in the same application. When I do "import util;" which one will the compiler pick? I suggest there is a root package named after the library. If people want a deimos package, that's fine with me as well. But there has to be a package named after the library where all modules should be located, except for, possibly, a module that imports the whole library.Hey all, currently, the 0mq and ncurses Deimos bindings place their modules in the root (both package- and directory-wise), while the liblzma ones use deimos.lzma and deimos.lzma_.*. The actual choice probably doesn't matter at all, but could we maybe pick one and then stick to it (including appropriate documentation of this decision, of course)? In my eyes, consistency would improve the "Just Works"-appeal of Deimos by quite a bit. Thanks, DavidI asked Walter about it and he preferred the modules in the root. Another guy claimed it would lead to namespace clashes but refused to elaborate. There is a lot about Deimos that isn't documented. It'll get there.
Nov 20 2011
This seems the obvious choice to me. Something like "import ncurses.util" seems natural and, well, package based. On 21/11/2011 1:31 AM, Jacob Carlborg wrote:On 2011-11-20 22:52, Jude Young wrote:On Sun 20 Nov 2011 02:20:18 PM CST, David Nadlinger wrote:Say that both liblzma and ncurses have a module called "util". What happens if I want to use both of these libraries in the same application. When I do "import util;" which one will the compiler pick? I suggest there is a root package named after the library. If people want a deimos package, that's fine with me as well. But there has to be a package named after the library where all modules should be located, except for, possibly, a module that imports the whole library.Hey all, currently, the 0mq and ncurses Deimos bindings place their modules in the root (both package- and directory-wise), while the liblzma ones use deimos.lzma and deimos.lzma_.*. The actual choice probably doesn't matter at all, but could we maybe pick one and then stick to it (including appropriate documentation of this decision, of course)? In my eyes, consistency would improve the "Just Works"-appeal of Deimos by quite a bit. Thanks, DavidI asked Walter about it and he preferred the modules in the root. Another guy claimed it would lead to namespace clashes but refused to elaborate. There is a lot about Deimos that isn't documented. It'll get there.
Nov 20 2011
On Mon 21 Nov 2011 01:42:54 AM CST, Kapps wrote:This seems the obvious choice to me. Something like "import ncurses.util" seems natural and, well, package based. On 21/11/2011 1:31 AM, Jacob Carlborg wrote:Yeah that's the exact same thing I was thinking. Unless There is some reason that this will not work, It feels like making a mountain out of a molehill... It would be great if there was a standard, but either way it's completely workable.On 2011-11-20 22:52, Jude Young wrote:On Sun 20 Nov 2011 02:20:18 PM CST, David Nadlinger wrote:Say that both liblzma and ncurses have a module called "util". What happens if I want to use both of these libraries in the same application. When I do "import util;" which one will the compiler pick? I suggest there is a root package named after the library. If people want a deimos package, that's fine with me as well. But there has to be a package named after the library where all modules should be located, except for, possibly, a module that imports the whole library.Hey all, currently, the 0mq and ncurses Deimos bindings place their modules in the root (both package- and directory-wise), while the liblzma ones use deimos.lzma and deimos.lzma_.*. The actual choice probably doesn't matter at all, but could we maybe pick one and then stick to it (including appropriate documentation of this decision, of course)? In my eyes, consistency would improve the "Just Works"-appeal of Deimos by quite a bit. Thanks, DavidI asked Walter about it and he preferred the modules in the root. Another guy claimed it would lead to namespace clashes but refused to elaborate. There is a lot about Deimos that isn't documented. It'll get there.
Nov 20 2011
On 2011-11-21 08:56, Jude Young wrote:On Mon 21 Nov 2011 01:42:54 AM CST, Kapps wrote:It will work, all modules at the top without a root package will NOT work, as far as I know. It's important to get it right.This seems the obvious choice to me. Something like "import ncurses.util" seems natural and, well, package based.Yeah that's the exact same thing I was thinking. Unless There is some reason that this will not work, It feels like making a mountain out of a molehill...It would be great if there was a standard, but either way it's completely workable.No, it's not workable to have all modules at the top without root package. -- /Jacob Carlborg
Nov 21 2011
young Dan-Laptop:~/bin$ mkdir mytest young Dan-Laptop:~/bin$ cd mytest/ young Dan-Laptop:~/bin/mytest$ git clone git://github.com/D-Programming-Deimos/ncurses Cloning into 'ncurses'... remote: Counting objects: 99, done. remote: Compressing objects: 100% (66/66), done. remote: Total 99 (delta 44), reused 86 (delta 31) Receiving objects: 100% (99/99), 73.24 KiB, done. Resolving deltas: 100% (44/44), done. young Dan-Laptop:~/bin/mytest$ l ncurses/ young Dan-Laptop:~/bin/mytest$ touch test.d young Dan-Laptop:~/bin/mytest$ l ncurses/ test.d young Dan-Laptop:~/bin/mytest$ vim test.d young Dan-Laptop:~/bin/mytest$ mkdir otherproject young Dan-Laptop:~/bin/mytest$ touch otherproject/curses.d young Dan-Laptop:~/bin/mytest$ dmd -I/ncurses test.d young Dan-Laptop:~/bin/mytest$ ./test I didn't bother to actually use the files compile-time will sort that outl. young Dan-Laptop:~/bin/mytest$ Yes DMD will try to compile blank files, yes 'test.d' had the exact phrase "import ncurses.curses;" since git will automatically create the folder 'ncurses' when you clone the project, that acts as the root package. What is wrong with this? If I'm missing something, please tell me.
Nov 21 2011
On 2011-11-21 09:41, Jude Young wrote:young Dan-Laptop:~/bin$ mkdir mytest young Dan-Laptop:~/bin$ cd mytest/ young Dan-Laptop:~/bin/mytest$ git clone git://github.com/D-Programming-Deimos/ncurses Cloning into 'ncurses'... remote: Counting objects: 99, done. remote: Compressing objects: 100% (66/66), done. remote: Total 99 (delta 44), reused 86 (delta 31) Receiving objects: 100% (99/99), 73.24 KiB, done. Resolving deltas: 100% (44/44), done. young Dan-Laptop:~/bin/mytest$ l ncurses/ young Dan-Laptop:~/bin/mytest$ touch test.d young Dan-Laptop:~/bin/mytest$ l ncurses/ test.d young Dan-Laptop:~/bin/mytest$ vim test.d young Dan-Laptop:~/bin/mytest$ mkdir otherproject young Dan-Laptop:~/bin/mytest$ touch otherproject/curses.d young Dan-Laptop:~/bin/mytest$ dmd -I/ncurses test.d young Dan-Laptop:~/bin/mytest$ ./test I didn't bother to actually use the files compile-time will sort that outl. young Dan-Laptop:~/bin/mytest$ Yes DMD will try to compile blank files, yes 'test.d' had the exact phrase "import ncurses.curses;" since git will automatically create the folder 'ncurses' when you clone the project, that acts as the root package. What is wrong with this? If I'm missing something, please tell me.That assumes ncurses/curses.d contains "module ncurses.curses;" and otherproject/curses.d contains "module otherproject.curses;" otherwise there will be a conflict: "main.d(73): Error: module test from file foo/test.d conflicts with another module test from file bar/test.d" This is not the case with the current ncurses bindings: https://github.com/D-Programming-Deimos/ncurses/blob/master/curses.d It will look weird if top level modules contain something like "module foo.bar;" and I don't think the modules should depend on the name of the repository. -- /Jacob Carlborg
Nov 21 2011
On Mon 21 Nov 2011 03:06:56 AM CST, Jacob Carlborg wrote:On 2011-11-21 09:41, Jude Young wrote:False. I actually ran the test that I showed you and encountered no errors. (other than something stupid I did along the way. which I edited out...) both curses.d file have "module curses;"young Dan-Laptop:~/bin$ mkdir mytest young Dan-Laptop:~/bin$ cd mytest/ young Dan-Laptop:~/bin/mytest$ git clone git://github.com/D-Programming-Deimos/ncurses Cloning into 'ncurses'... remote: Counting objects: 99, done. remote: Compressing objects: 100% (66/66), done. remote: Total 99 (delta 44), reused 86 (delta 31) Receiving objects: 100% (99/99), 73.24 KiB, done. Resolving deltas: 100% (44/44), done. young Dan-Laptop:~/bin/mytest$ l ncurses/ young Dan-Laptop:~/bin/mytest$ touch test.d young Dan-Laptop:~/bin/mytest$ l ncurses/ test.d young Dan-Laptop:~/bin/mytest$ vim test.d young Dan-Laptop:~/bin/mytest$ mkdir otherproject young Dan-Laptop:~/bin/mytest$ touch otherproject/curses.d young Dan-Laptop:~/bin/mytest$ dmd -I/ncurses test.d young Dan-Laptop:~/bin/mytest$ ./test I didn't bother to actually use the files compile-time will sort that outl. young Dan-Laptop:~/bin/mytest$ Yes DMD will try to compile blank files, yes 'test.d' had the exact phrase "import ncurses.curses;" since git will automatically create the folder 'ncurses' when you clone the project, that acts as the root package. What is wrong with this? If I'm missing something, please tell me.That assumes ncurses/curses.d contains "module ncurses.curses;" and otherproject/curses.d contains "module otherproject.curses;" otherwise there will be a conflict:"main.d(73): Error: module test from file foo/test.d conflicts with another module test from file bar/test.d" This is not the case with the current ncurses bindings: https://github.com/D-Programming-Deimos/ncurses/blob/master/curses.d It will look weird if top level modules contain something like "module foo.bar;" and I don't think the modules should depend on the name of the repository.young Dan-Laptop:~/bin/mytest$ vim otherproject/curses.d young Dan-Laptop:~/bin/mytest$ dmd -I/ncurses -I/otherproject test.d I made it so that both projects have identical module names. "module curses;" DMD still works it out fine if you import "ncurses.curses, otherproject.curses;" The only way that I can see you running into errors is if you insist upon using "import curses;". Which I do not know how you will get around that anyways, so I think I am entirely missing your point. ...and it appears that there is an error in ncurses about unctrl.d... =( I showed you an example, and there were no problems. Show me an example where there will be problems, because everything you have told me does not seem to apply to the current situation. I will fix both Deimos and ZeroMQ (and the projects I'm currently working on) if you can give me enough information to duplicate the problems.
Nov 21 2011
On 2011-11-21 10:30, Jude Young wrote:young Dan-Laptop:~/bin/mytest$ vim otherproject/curses.d young Dan-Laptop:~/bin/mytest$ dmd -I/ncurses -I/otherproject test.d I made it so that both projects have identical module names. "module curses;" DMD still works it out fine if you import "ncurses.curses, otherproject.curses;"Does that really work? You would need to do "dmd -I." which I think dmd does by default so in this case it actually works.The only way that I can see you running into errors is if you insist upon using "import curses;".Yeah, that's what I did.Which I do not know how you will get around that anyways, so I think I am entirely missing your point. ...and it appears that there is an error in ncurses about unctrl.d... =( I showed you an example, and there were no problems. Show me an example where there will be problems, because everything you have told me does not seem to apply to the current situation.jacob des-051 ~/development/d/foobar$ ls lib main.d jacob des-051 ~/development/d/foobar$ cat main.d module main; import foo.test; import bar.test; void main () { }jacob des-051 ~/development/d/foobar$ cd lib/ jacob des-051 ~/development/d/foobar/lib$ ls bar foo jacob des-051 ~/development/d/foobar/lib$ cd bar/ jacob des-051 ~/development/d/foobar/lib/bar$ cat test.d module test;jacob des-051 ~/development/d/foobar/lib/bar$ cd ../foo/ jacob des-051 ~/development/d/foobar/lib/foo$ cat test.d module test;jacob des-051 ~/development/d/foobar/lib/foo$ cd ../../ jacob des-051 ~/development/d/foobar$ dmd main.d -I./lib/foo -I./lib/bar main.d(3): Error: module test is in file 'foo/test.d' which cannot be read import path[0] = ./lib/foo import path[1] = ./lib/bar import path[2] = /Users/jacob/.dvm/compilers/dmd-1.070/bin/../import jacob des-051 ~/development/d/foobar$ dmd main.d -I./lib main.d(4): Error: module test from file ./lib/bar/test.d conflicts with another module test from file ./lib/foo/test.d jacob des-051 ~/development/d/foobar$ If I change both test files to include the package, e.g. "module foo.test;" and "module bar.test;" it works. But in that case I have to add the whole "lib" to the include path, which I may not want to. Then I have to manually put the projects in their own directories.I will fix both Deimos and ZeroMQ (and the projects I'm currently working on) if you can give me enough information to duplicate the problems.It's just weird if the module and import declarations doesn't match, i.e. "module curses;" and "import ncurses.curses;". -- /Jacob Carlborg
Nov 21 2011
young Dan-Laptop:~/bin/mytest$ dmd -I/ncurses -I/otherproject test.d I'm retarded. Still works
Nov 21 2011
On 11/20/2011 11:31 PM, Jacob Carlborg wrote:On 2011-11-20 22:52, Jude Young wrote:import liblzma.util; import ncurses.util;On Sun 20 Nov 2011 02:20:18 PM CST, David Nadlinger wrote:Say that both liblzma and ncurses have a module called "util". What happens if I want to use both of these libraries in the same application. When I do "import util;" which one will the compiler pick?Hey all, currently, the 0mq and ncurses Deimos bindings place their modules in the root (both package- and directory-wise), while the liblzma ones use deimos.lzma and deimos.lzma_.*. The actual choice probably doesn't matter at all, but could we maybe pick one and then stick to it (including appropriate documentation of this decision, of course)? In my eyes, consistency would improve the "Just Works"-appeal of Deimos by quite a bit. Thanks, DavidI asked Walter about it and he preferred the modules in the root. Another guy claimed it would lead to namespace clashes but refused to elaborate. There is a lot about Deimos that isn't documented. It'll get there.I suggest there is a root package named after the library. If people want a deimos package, that's fine with me as well. But there has to be a package named after the library where all modules should be located, except for, possibly, a module that imports the whole library.That already is so. What I objected to was: import liblzma.D.util; as pointless.
Nov 21 2011
On 2011-11-21 20:14, Walter Bright wrote:On 11/20/2011 11:31 PM, Jacob Carlborg wrote:No it's not. Have a look at the curses module in the ncurses repository. https://github.com/D-Programming-Deimos/ncurses/blob/master/curses.d It has the following module declaration: "module curses;", which means it will conflict with any other library the has a module with the same name.Say that both liblzma and ncurses have a module called "util". What happens if I want to use both of these libraries in the same application. When I do "import util;" which one will the compiler pick?import liblzma.util; import ncurses.util;I suggest there is a root package named after the library. If people want a deimos package, that's fine with me as well. But there has to be a package named after the library where all modules should be located, except for, possibly, a module that imports the whole library.That already is so. What I objected to was:import liblzma.D.util; as pointless.Yeah, that D package won't to anything good. -- /Jacob Carlborg
Nov 21 2011
On 11/21/2011 12:13 PM, Jacob Carlborg wrote:https://github.com/D-Programming-Deimos/ncurses/blob/master/curses.d It has the following module declaration: "module curses;", which means it will conflict with any other library the has a module with the same name.Yeah, that should be fixed.
Nov 21 2011
On 2011-11-21 22:12, Walter Bright wrote:On 11/21/2011 12:13 PM, Jacob Carlborg wrote:Yes, thank you. Finally someone understands :) -- /Jacob Carlborghttps://github.com/D-Programming-Deimos/ncurses/blob/master/curses.d It has the following module declaration: "module curses;", which means it will conflict with any other library the has a module with the same name.Yeah, that should be fixed.
Nov 21 2011
Jacob, if you read my previous posts you will see that I proposed exactly what you talked about... :)
Nov 22 2011
On 2011-11-22 10:58, Dejan Lekic wrote:Jacob, if you read my previous posts you will see that I proposed exactly what you talked about... :)Maybe, there was something I didn't like with your proposal if I recall correctly. -- /Jacob Carlborg
Nov 22 2011
We talked about this on the irc://irc.freenode.org/d IRC channel a lot... Deimos is young and we will come up with a good solution to this issue soon. There is a good reason for having modules in the root of deimos. (lzma is a good example) However, the problem with that is that one can't just simply checkout the source straight from some VCS repository into the deimos dir. Unfortunately a symlink is a must in such case... If, however, project is in its own folder (like I do with my old ncurses binding), than I can simply do: cd ~/src/deimos; svn co svn://path.to.my.server/ncurses After this I will have a working curses package... There are several things to be clear before Deimos becomes more popular, and it will make people contribute more. I only have to say that I prefer convention over configuration. - We just simply have to decide some Deimos conventions and all authors of deimos bindings should follow them if they want their projects to be part of the Deimos.
Nov 21 2011
It would be great if a single include statement in /etc/dmd.conf would be enough to use all deimos projects: -I/usr/include/d/dmd/deimos or -I$HOME/include/d/deimos Then just pickup your preferated deimos projects from the website and put them into your local deimos folder. I suggest to consistently use deimos.libname_.modulname; import deimos.ncurses_.termcap; import deimos.ncurses_.cursslk; import deimos.ncurses_.eti; import deimos.lzma_.delta; import deimos.lzma_.index; import deimos.zmq_.zmq; import deimos.zmq_.utils; import deimos.mysql_.keycache; import deimos.mysql_.debug; import deimos.mysql_.embed; ... If you are going to import _all_ modules of a deimos lib then use this shortcut: import deimos.ncurses; import deimos.lzma; import deimos.zmq; import deimos.mysql; ... Free for comments! - mta`chrono
Nov 21 2011
Yes. Thanks for reminding us. We discussed this as well on irc://irc.freenode.org/d ... I absolutely agree that if Deimos is "installed" (or mayber better say "enabled"), then dmd.conf should contain the abovementioned include line. About the <project_> package... It *should not* be imported directly by a user (developer). It should be imported by the module inside the deimos package. So we would have: import deimos.lzma; // imports deimos.lzma_.delta and deimos.lzma_.index As I wrote in one of my previous posts, it should be one-to-one correspondence between deimos modules, and libraries. So, liblzma binding would have only one module: deimos.lzma, while ncurses binding will have 3 (or 4): deimos.ncurses, deimos.panel, deimos.menu, deimos.form . Why? - Because each import will trigger a different library as well. For deimos.ncurses you need -lncurses flag, for deimos.panel you need the - lpanel flag for the linker, and so on. Regards
Nov 21 2011
On 11/21/2011 7:05 AM, Dejan Lekic wrote:Yes. Thanks for reminding us. We discussed this as well on irc://irc.freenode.org/d ... I absolutely agree that if Deimos is "installed" (or mayber better say "enabled"), then dmd.conf should contain the abovementioned include line.Deimos is an organization that (if it is successful) will get very large. People aren't going to get the whole thing any more than they get every C library header from Ubuntu's repository.
Nov 21 2011
On Mon, 21 Nov 2011 11:21:37 -0800 Walter Bright <newshound2 digitalmars.com> wrote:Deimos is an organization that (if it is successful) will get very large. People aren't going to get the whole thing any more than they get every C library header from Ubuntu's repository.We're strongly reconsidering to use D - this time using gtk+ or wxwidgets bindings. The former is in a relatively good shape, but we're not sure about the latter. So, the question is if Deimos considers to be 'mentor' for some of GUI bindings which are, imho, important part of building D's ecosystem? Those are maybe not according to the manifesto, but play important role for wider adoption of D. Sincerely, Gour --=20 In this endeavor there is no loss or diminution,=20 and a little advancement on this path can protect=20 one from the most dangerous type of fear. http://atmarama.net | Hlapicina (Croatia) | GPG: 52B5C810
Nov 21 2011
On 11/21/2011 11:32 AM, Gour wrote:So, the question is if Deimos considers to be 'mentor' for some of GUI bindings which are, imho, important part of building D's ecosystem?All Deimos is is D bindings for popular C libraries. Anything else is outside of its charter. The flow chart is: 1. I want to access C library libxx from D. 2. I look for it in Deimos. 3. It's there - download it and use it. 4. It's not there - create it and submit it to Deimos.
Nov 21 2011
On Mon, 21 Nov 2011 12:00:26 -0800 Walter Bright <newshound2 digitalmars.com> wrote:All Deimos is is D bindings for popular C libraries. Anything else is outside of its charter.OK. Then I hope Sqlite3 applies? Sincerely, Gour --=20 The embodied soul may be restricted from sense enjoyment,=20 though the taste for sense objects remains. But, ceasing=20 such engagements by experiencing a higher taste,=20 he is fixed in consciousness. http://atmarama.net | Hlapicina (Croatia) | GPG: 52B5C810
Nov 23 2011
On 2011-11-21 15:54, mta`chrono wrote:It would be great if a single include statement in /etc/dmd.conf would be enough to use all deimos projects: -I/usr/include/d/dmd/deimosI don't like this. It will include modules that one may not have any use for. It may also make it more complicated for a package manager. -- /Jacob Carlborg
Nov 21 2011
Good point Jacob. I did not think about that possibility. Especially if Deimios grows big...
Nov 21 2011
On a second thought... Why would that be a problem? Even if hundreds of packages are inside $HOME/include/d/deimos ??? The -I$HOME/include/d/deimos will just inform compiler where to look for modules. Is the "-I" flag really such an overhead? o.O
Nov 21 2011
Good point. D's imports are nothing like C's includes, which dramatically slow down compilation if their numbers grow beyond 3 digits. On Mon, Nov 21, 2011 at 8:58 PM, Dejan Lekic <dejan.lekic gmail.com> wrote:On a second thought... Why would that be a problem? Even if hundreds of packages are inside $HOME/include/d/deimos ??? The -I$HOME/include/d/deimos will just inform compiler where to look for modules. Is the "-I" flag really such an overhead? o.O
Nov 21 2011
On 2011-11-21 17:58, Dejan Lekic wrote:On a second thought... Why would that be a problem? Even if hundreds of packages are inside $HOME/include/d/deimos ??? The -I$HOME/include/d/deimos will just inform compiler where to look for modules. Is the "-I" flag really such an overhead? o.ONo, I don't think it's any overhead. But I want this to be handled by a package manager. I want a file that says: "this project depends on these libraries". Then it's up to the package manager to install and make them available for the compiler. -- /Jacob Carlborg
Nov 21 2011
Well, if you carefully read my previous post about module/package structure (ncurses example shows the point), you would see that i proposed a module- per-library. It is a convention over configuration approach. If you see "import deimos.foo;" in the code, that automatically means -lfoo in your project! It is simple, and straightforward. Regards
Nov 21 2011
On Mon, 21 Nov 2011 18:27:42 +0100, Jacob Carlborg <doob me.com> wrote:On 2011-11-21 17:58, Dejan Lekic wrote:That's the decision to be made. I'd personally prefer a library/package approach for deimos as such. At best import deimos.ncurses or import deimos.zeromq would be everything thats needed. OTOH the D-Programming-Deimos is already suggesting to rather use a package per binding approach and if people wanted to distribute additional files it'd be the only sensible choice. Still I think this will loose some consistency. By the way, how have you settled to request for adding a repository? martinOn a second thought... Why would that be a problem? Even if hundreds of packages are inside $HOME/include/d/deimos ??? The -I$HOME/include/d/deimos will just inform compiler where to look for modules. Is the "-I" flag really such an overhead? o.ONo, I don't think it's any overhead. But I want this to be handled by a package manager. I want a file that says: "this project depends on these libraries". Then it's up to the package manager to install and make them available for the compiler.
Nov 21 2011
deimos as such. At best import deimos.ncurses or import deimos.zeromq would be everything thats needed.Making "import deimos.ncurses" import everything is just wrong. NCurses consists of 13 libraries. 4 of them are the most important to the user (developer): curses, menu, panel and form. Importing panel if you never use NCurses panels is pointless I think. It is not a big library though... Libs: /usr/lib64/libcurses.so /usr/lib64/libcursesw.so /usr/lib64/libform.so /usr/lib64/libformw.so /usr/lib64/libmenu.so /usr/lib64/libmenuw.so /usr/lib64/libncurses.so /usr/lib64/libncursesw.so /usr/lib64/libpanel.so /usr/lib64/libpanelw.so /usr/lib64/libtermcap.so /usr/lib64/libtic.so /usr/lib64/libtinfo.so
Nov 22 2011
Making "import deimos.ncurses" import everything is just wrong. NCurses consists of 13 libraries. 4 of them are the most important to the user (developer): curses, menu, panel and form. Importing panel if you never use NCurses panels is pointless I think. It is not a big library though... ...I think in this case "import deimos.ncurses;" should _NOT_ be available. It's pointless, I agree in what you said. It needs to be devided into serveral modules. import deimos.ncurses.curses; import deimos.ncurses.menu; import deimos.ncurses.panel; import deimos.ncurses.form; -------------------------- 1. smart library bindings Those bindings that fit in a _single_ module. They consists of a single source file and can be imported via "import deimos.libname;" 2. bigger library bindings They _don't_ fit in a single module and therefore they provide different modules. they can be imported via "import deimos.libname.sub1; import deimos.libname.sub2; ..." 3. aggregation of bindings In _some_ cases it seems to be useful if you can import _all_ modules at once. deimos.libname.sub{i} is renamed to deimos.libname_.sub{i} and a dummy deimos.libname is added to import them all at once. I'm very interessted in your personal opinion. So: Free for comments :-)
Nov 22 2011
I think in this case "import deimos.ncurses;" should _NOT_ be available. It's pointless, I agree in what you said. It needs to be devided into serveral modules.I disagree. There is nothing wrong with "import deimos.ncurses;" That module will import all modules (read ncurses header files), that have to be imported so an application linked with -lncurses flag work. deimos.ncurses is basically the core module. If developer does not need fancy stuff, he or she will import only this module, nothing else.
Nov 22 2011
On Tue, 22 Nov 2011 13:00:31 +0100, mta`chrono <chrono mta-international.net> wrote:From /usr/include: ncurses.h -> curses.h curses.h | basic header panel.h | includes curses.h form.h | includes curses.h and eti.h It makes sense to follow that pattern and wrap up everything under deimos.ncurses or ncurses. Having an ncurses package currently disallows to have a ncurses module under the same path, so this is no option. martinMaking "import deimos.ncurses" import everything is just wrong. NCurses consists of 13 libraries. 4 of them are the most important to the user (developer): curses, menu, panel and form. Importing panel if you never use NCurses panels is pointless I think. It is not a big library though... ...I think in this case "import deimos.ncurses;" should _NOT_ be available. It's pointless, I agree in what you said. It needs to be devided into serveral modules. import deimos.ncurses.curses; import deimos.ncurses.menu; import deimos.ncurses.panel; import deimos.ncurses.form;-------------------------- 1. smart library bindings Those bindings that fit in a _single_ module. They consists of a single source file and can be imported via "import deimos.libname;" 2. bigger library bindings They _don't_ fit in a single module and therefore they provide different modules. they can be imported via "import deimos.libname.sub1; import deimos.libname.sub2; ..." 3. aggregation of bindings In _some_ cases it seems to be useful if you can import _all_ modules at once. deimos.libname.sub{i} is renamed to deimos.libname_.sub{i} and a dummy deimos.libname is added to import them all at once. I'm very interessted in your personal opinion. So: Free for comments :-)
Nov 22 2011
It makes sense to follow that pattern and wrap up everything under deimos.ncurses or ncurses. Having an ncurses package currently disallows to have a ncurses module under the same path, so this is no option.True, that is the main reason why we suggested (the IRC discussion I talked about) to use the "name_" for library packages. This is not a big deal because a developer will never directly import from there anyway! Example: import deimos.ncurses; This import statement will trigger importing of: deimos.ncurses_.ncurses_h; // i name header file translations like: file.h -file_h.d(and probably termcap_h.d too) This is, ofcoruse, just a suggestion. If there are better ways, please share with us. :) Regards
Nov 22 2011
On Tue, 22 Nov 2011 17:38:43 +0100, Dejan Lekic <dejan.lekic gmail.com> wrote:Well, implementing http://www.wikiservice.at/d/wiki.cgi?LanguageDevel/DIPs/DIP13 and something in the direction of http://www.wikiservice.at/d/wiki.cgi?LanguageDevel/DIPs/DIP15 ;). I spend some time thinking about a good import structure for deimos and somehow couldn't find a good fit. Reflecting /usr/include or /usr/local/include would be a plain and simple convention but that doesn't pair with individual repositories.It makes sense to follow that pattern and wrap up everything under deimos.ncurses or ncurses. Having an ncurses package currently disallows to have a ncurses module under the same path, so this is no option.True, that is the main reason why we suggested (the IRC discussion I talked about) to use the "name_" for library packages. This is not a big deal because a developer will never directly import from there anyway! Example: import deimos.ncurses; This import statement will trigger importing of: deimos.ncurses_.ncurses_h; // i name header file translations like: file.h -file_h.d(and probably termcap_h.d too) This is, ofcoruse, just a suggestion. If there are better ways, please share with us. :) Regards
Nov 22 2011
No, I don't think it's any overhead. But I want this to be handled by a package manager. I want a file that says: "this project depends on these libraries". Then it's up to the package manager to install and make them available for the compiler.I think your intention to make use of a package manager is implicit shared by Dejan. It would be cool to provide a packet manager for windows and to have a deimos_to_deb converter. Think of apt-get install dpl-deimos-lzma :-)...
Nov 21 2011
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1If you are going to import _all_ modules of a deimos lib then use this shortcut: import deimos.ncurses; import deimos.lzma; import deimos.zmq; import deimos.mysql; ... Free for comments! - mta`chronoNot always gonna work. ncurses already has a file 'ncurses' which is just a symlink to curses. It would be weird to have 'import deimos.ncurses' which imports everything, and 'import deimos.ncurses.ncurses' which imports a single file. It's not how things are currently done(I don't think) and it would be weird... It would seem to require a revamping of how imports are currently done(which has actually been suggested) or including extra files which aren't there in the C versions. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBAgAGBQJOyrXhAAoJENcHIWLyQiSlEvUH/1CakOerm+Ar0YaYQouCKk/g cnS8o3QTZR1cKXbl1Voxm/EzDSRkHbo0Qu396HrIS+r8W9Hs5ZzMtwdnKM+wS5+c 26RITKTlHPEk/Ym4sccWWhGCsBWCa7+TtK8J7/1Vz8j2BaNBMNJ3M5mZbw0+f/Qd I+fEI+l43IltgI0hzdZaD1oCe9DpbG12XaPH3EIzU1FdT5s7Ac1xpxcZ6zll7BL3 WTg8KsE8bhvktQW9ZfDIRg/GGlOPpQSPjXLId02XA2M3m2maCFiiSDo6xntbOpvt Irj9AFnFnPCnKtFZvsOPdEo/RZ8o584EUt0P08TYxLcbTcYPvzuNeeZBUyaQZS4= =OD6B -----END PGP SIGNATURE-----
Nov 21 2011