Re: Regal: An SQL relational algebra builder
On 16/05/14 02:29, Dylan Knutson wrote: Hi all, I'd like to announce the initial version of Regal, an SQL relational algebra builder for D. It's intended as a backbone for a relational database ORM, in line with how Arel works with Rails' ActiveRecord, but nearly any project that generates SQL dynamically can benefit from it. The goal of the library is to make programmatically generating queries simple (and more robust than simple string concatenation), and to be database agnostic (it's very easy to write database specific printers for a Regal AST). There are extensive examples available in the Readme about how to use the library, from generating very simple queries (SELECT * FROM users) to multiple chained joins and nested constraints. Here's an example from the documentation: finding a user with ID 1: ``` auto users = new Table( users, // table name id,// the rest are columns name, created_at, updated_at); Does this need to be a class, can it be a struct instead? // SELECT * FROM users WHERE users.id = 1 LIMIT 1 users .where(users.id.eq(1)) .limit(1) .project(new Sql(*)) .to_sql ``` Why is 'new Sql(*)' needed? If you need to have a specific type, could it be a struct instead? The library can be found at: https://github.com/dymk/regal And the dub package: http://code.dlang.org/packages/regal This all looks pretty nice :). Does it work at compile time? -- /Jacob Carlborg
Re: 10 Years of Derelict
On Thursday, 15 May 2014 at 15:02:33 UTC, Mike Parker wrote: I managed to let this little anniversary slip by me. My first post in the old Derelict forum at DSource[1] is dated May 6, 2004, my initial commit to svn[2] was May 7, and my announcement in the newsgroup[3] was on May 8. My attention to the project has waxed and waned, but I'm still puttering along. I expect to continue for the forseeable future. There have been a number of contributors over the years who have helped out in porting to Linux and Mac, fixing bugs, and keeping the bindings up to date. It's been very much a community project, which has made it more enjoyable to work on. It helps that it isn't difficult to maintain :) Maybe before the next decade goes by I'll actually finish a game in D, which is the reason I started Derelict in the first place. For those who don't know, the current iteration of Derelict can be found at the DerelictOrg group at github[4]. I've still got work to do on it (ahem, documentation), but it's coming along. [1] http://www.dsource.org/forums/viewtopic.php?t=105 [2] http://www.dsource.org/projects/derelict/changeset/5/ [3] http://forum.dlang.org/thread/c7hl51$2k4u$1...@digitaldaemon.com [4] https://github.com/DerelictOrg Thanks for that long dedication! Using it since 7 years :) I probably wouldn't have stucked with D if it weren't for Derelict, and I know other people who wouldn't have either.
Re: Regal: An SQL relational algebra builder
Does this need to be a class, can it be a struct instead? Ya know, it might be able to be made into a struct; I'll fiddle with it tomorrow. The main reason it was made a class was so .join had to take a Table type as its first parameter, and internally Table implements a Joinable interface (which is needed for chaining .joins and propagating the table name during printing). Why is 'new Sql(*)' needed? If you need to have a specific type, could it be a struct instead? The Sql class is needed because it's a node in the AST (all nodes inherit from a basic Node class) that just prints out its content verbatim when to_sql is called. All the methods that take a Node would need to be modified/templated to also accept a specialized SQL struct type, which unfortunately isn't feasible. If it was done, it'd probably be implemented using std.variant's Algebraic type, but then CTFE is forfeited. If you know of another way to go about doing this, I'd be really interested in hearing it. It is unfortunate that the library has to make so many small allocations, for sure. Another option is, you could try using CTFE as much as possible to get the allocations over with at compile time :) The library can be found at: https://github.com/dymk/regal And the dub package: http://code.dlang.org/packages/regal This all looks pretty nice :). Does it work at compile time? Thank you! I haven't tested it, but it's not using any features that would impede CTFE. So that's a solid probably.
Re: 10 Years of Derelict
On Friday, 16 May 2014 at 07:43:06 UTC, ponce wrote: On Thursday, 15 May 2014 at 15:02:33 UTC, Mike Parker wrote: I managed to let this little anniversary slip by me. My first post in the old Derelict forum at DSource[1] is dated May 6, 2004, my initial commit to svn[2] was May 7, and my announcement in the newsgroup[3] was on May 8. My attention to the project has waxed and waned, but I'm still puttering along. I expect to continue for the forseeable future. There have been a number of contributors over the years who have helped out in porting to Linux and Mac, fixing bugs, and keeping the bindings up to date. It's been very much a community project, which has made it more enjoyable to work on. It helps that it isn't difficult to maintain :) Maybe before the next decade goes by I'll actually finish a game in D, which is the reason I started Derelict in the first place. For those who don't know, the current iteration of Derelict can be found at the DerelictOrg group at github[4]. I've still got work to do on it (ahem, documentation), but it's coming along. [1] http://www.dsource.org/forums/viewtopic.php?t=105 [2] http://www.dsource.org/projects/derelict/changeset/5/ [3] http://forum.dlang.org/thread/c7hl51$2k4u$1...@digitaldaemon.com [4] https://github.com/DerelictOrg Thanks for that long dedication! Using it since 7 years :) I probably wouldn't have stucked with D if it weren't for Derelict, and I know other people who wouldn't have either. Same here. It'd just be good for it to stabilize so we can write tutorials for it without them getting out of date (yeah, the APIs are the same, but Derelict itself keeps changing).
Re: OpenGL Examples in D and a birth of a New Initiative
On 5/16/14, Manu via Digitalmars-d-announce digitalmars-d-announce@puremagic.com wrote: Out of curiosity, are you running Linux or Windows? Win7.
Re: 10 Years of Derelict
On 5/16/2014 5:32 PM, Kiith-Sa wrote: It'd just be good for it to stabilize so we can write tutorials for it without them getting out of date (yeah, the APIs are the same, but Derelict itself keeps changing). For the record, I don't foresee any more structural changes now that I've got the versioning with dub sorted. Once I get all of the packages caught up, and barring any unexpected surprises (like, everyone abandoning dub for something else), it all should (finally!) be in a permanently stable state. I'm really happy with the current set up.
Re: 10 Years of Derelict
On 16/05/2014 3:02 a.m., Mike Parker wrote: I managed to let this little anniversary slip by me. My first post in the old Derelict forum at DSource[1] is dated May 6, 2004, my initial commit to svn[2] was May 7, and my announcement in the newsgroup[3] was on May 8. My attention to the project has waxed and waned, but I'm still puttering along. I expect to continue for the forseeable future. There have been a number of contributors over the years who have helped out in porting to Linux and Mac, fixing bugs, and keeping the bindings up to date. It's been very much a community project, which has made it more enjoyable to work on. It helps that it isn't difficult to maintain :) Maybe before the next decade goes by I'll actually finish a game in D, which is the reason I started Derelict in the first place. For those who don't know, the current iteration of Derelict can be found at the DerelictOrg group at github[4]. I've still got work to do on it (ahem, documentation), but it's coming along. [1] http://www.dsource.org/forums/viewtopic.php?t=105 [2] http://www.dsource.org/projects/derelict/changeset/5/ [3] http://forum.dlang.org/thread/c7hl51$2k4u$1...@digitaldaemon.com [4] https://github.com/DerelictOrg I also have to say good job on your work on it! I definitely value it, even if I don't use it much.
Re: 10 Years of Derelict
On 5/16/2014 4:43 PM, ponce wrote: Thanks for that long dedication! Using it since 7 years :) I probably wouldn't have stucked with D if it weren't for Derelict, and I know other people who wouldn't have either. I think you've just motivated me to do drop everything else and work on Derelict exclusively for the next few weeks. Thanks :)
Re: OpenGL Examples in D and a birth of a New Initiative
On 5/15/14, Dicebot via Digitalmars-d-announce digitalmars-d-announce@puremagic.com wrote: I think it is a very good initiative to start creating community teams of D hackers interested in specific domains. Can be beneficial for both spreading the information and lobbying needed changes in D/Phobos. Yeah. I plan on writing some blog posts as well to get things going. Game dev is not my area of interest but I wish you best luck :) Thanks!
Re: Regal: An SQL relational algebra builder
On 16/05/14 09:58, Dylan Knutson wrote: Ya know, it might be able to be made into a struct; I'll fiddle with it tomorrow. The main reason it was made a class was so .join had to take a Table type as its first parameter, and internally Table implements a Joinable interface (which is needed for chaining .joins and propagating the table name during printing). Can you do compile time introspection, like ranges do? Basically check if it has a join method. The Sql class is needed because it's a node in the AST (all nodes inherit from a basic Node class) that just prints out its content verbatim when to_sql is called. All the methods that take a Node would need to be modified/templated to also accept a specialized SQL struct type, which unfortunately isn't feasible. If it was done, it'd probably be implemented using std.variant's Algebraic type, but then CTFE is forfeited. If you know of another way to go about doing this, I'd be really interested in hearing it. It is unfortunate that the library has to make so many small allocations, for sure. I don't know, use structs and compile time introspection. Another option is, you could try using CTFE as much as possible to get the allocations over with at compile time :) -- /Jacob Carlborg
Re: OpenGL Examples in D and a birth of a New Initiative
On 5/14/14, Andrej Mitrovic andrej.mitrov...@gmail.com wrote: I am starting an initiative for everyone interested in D game development by creating the github organization d-gamedev-team[1]. Just ported the imgui library to D. It's a minimal OpenGL GUI library, useful for things like tweaking parameters. Have a look here (screenshot included): https://github.com/d-gamedev-team/dimgui http://code.dlang.org/packages/dimgui
Gearing up for DConf 2014
We're stoked about DConf 2014! 54 visitors will be joined by 10 Facebook engineers for a great three-day event. James Pearce (https://twitter.com/jamespearce), Facebook's Open Source representative, graciously accepted to emcee the conference. We have secured livestreaming of the entire event. I'll be glad to take questions on Twitter in real time during my keynote, Wendnesday May 21, 9:00-10:00 AM PST. Send your questions to @D_Programming with hashtag #dconf. Tolga Cakiroglu put together a beautiful T-shirt design - even our recruiters and the folks at the printing company were impressed. We're also happy to announce that Facebook will throw a Happy Hour with food and drinks on Thursday, May 22, between 5:30 and 7:30 PM. We haven't yet filled the Lightning Talks (http://dconf.org/2014/talks/lightning.html), please send me a note if you're interested in talking for 5-10 minutes on anything you believe is interesting and relevant. See you soon! Andrei
Re: 10 Years of Derelict
When I choose a programming language to work on a problem, one of the factors I look at is whether there are enough tools and libraries to construct a solution in a reasonable amount of time. Back when I was looking at D for game development – and I still am – there was Derelict. And now, there still is Derelict. Without it, I probably would've wrote D off for this specific task. I'm hoping in another few years, we'll have nice idiomatic D wrappers on top of Derelict for most things. There are a lot of promising projects out there, many that are quite nice already (gfm, for example). Derelict oft serves as the basis for these projects, eliminating a lot of the front load. Thanks to Mike Parker and all of the other contributors for developing and maintaining Derelict for these 10 long years. Regards, Kelet