AltME groups: search
Help · search scripts · search articles · search mailing listresults summary
world | hits |
r4wp | 230 |
r3wp | 2016 |
total: | 2246 |
results window for this page: [start: 1901 end: 2000]
world-name: r3wp
Group: !REBOL3 GUI ... [web-public] | ||
Pekr: 6-Jan-2010 | I just found Henrik's summary. I think it is the post I had in mind: --------------------------------------------- Indeed VID3.4 is far from done. You can probably use it for a few things, like getting a name from a user in a text field or submit a very simple form, but not much more than that. To reiterate the state of the UI: - No unicode yet in graphics (when Cyphre gets around to it). - Resizing acts like a drunken sailor. (Carl) - Skin is not published. (Me) - Style tagging is not implemented. (Carl) - Reasonable requesters are not yet implemented. (Carl or me) - Layers are not yet implemented. (Carl) - Guides are not yet implemented. (Carl) - Better font rendering. We are not taking advantage of what AGG can do. (Cyphre again) - Event system is from Gabriele's VID3. (Carl) - Many features are untested, like drag&drop. (Me, I guess) - Proper material management for skin. (Me). - Many styles are not implemented, especially lists (Me). - More elaborate animation engine (Carl or Me). - Form dialect (Carl talked about this). - More/better icon artwork (Me). Plus, Maxim has some ideas for DRAW, to greatly speed up rendering, but I don't know if they can be implemented. The overall design of the GUI engine is very good. Whenever a change or addition is made, you alter 3-5 lines of code in one place, and it works. I doubt the entire engine will be rewritten. You won't see GUI bug reports in Curecode for a while. There could easily be 2-300 reports, once we get to that point. My work regarding skins is rather big: I need to work out the basic styles first, so we have a reasonable way to build compound styles. These are being done using a very simple, but pixel accurate GUI using plain colored surfaces. This is easier for testing out, as draw blocks are small, but as Pekr likes to complain: They are not pretty to look at. Once the real skin goes into place, the draw blocks will grow a lot. I would love to see a low-level GOB management dialect, like Gabriele's MakeGOB. | |
Ashley: 8-Jan-2010 | The way I see it, there are at least four ways to build an R3 GUI [based on gobs]: 1) Heirarchical, where gobs are grouped into faces, which are in turn grouped into windows 2) Flat, where a DOM-like object maps all gobs (i.e. removes the need for intermediate faces/windows) 3) Draw-based, where each window consists of a single gob with the entire window rendered in a draw block 4) Image-based, similar, but the draw block is pre-rendered into an image. | |
Pekr: 8-Jan-2010 | I digged following from Max in the past: --------------------------------- My pet peeve about R3 view is that we still don't have access to the actual AGG elements directly within rebol. We still have to go through a clumsy interface called draw dialect. The dialect is fine (great actually) for initialisation, but after that, its not adapted to actual manipulation of what is going on inside, you have to go trough a rebol -> agg convertion stage at each refresh. It's not the speed, it's the fact that it's complicated cause you have to create "virtual" draw components and then assemble them on the fly reducing blocks and stuff. I'd love to be able to do: a: draw [circle 30x30 15] a/radius: 30 a/offset: 100x100 show a If graphic elements where first class datatypes, we could completely ignore the gobs, and build real canvases, uber fast. Another example, more appropriate: ; this draws a box... draw [s: polygon 10x10 30x10 30x-30 10x-30] ; make it a house outline insert at s/vertices 4 20x-40 ; raise the "roof" s/vertices/4/y: -50 The problem is that to edit draw blocks, you have to create a slew of things before creating the draw block, then you have to store references to all of those things somewhere, everytime you want to add a "dynamic" attribute its pretty tedious. The first-class gel datatype would allow AGG to edit its internals directly using binary C code through its accessors. no need to go through rebol funcs and reducing blocks, etc. The use of "show a" above could intrinsincally know that it only needs to refresh the region that this element affects, just like all graphic cards do when evaluating the graphic pipe rendering. So many things like flash games which become soooo heavy in AGG would be real-time and use much less CPU resouces. in most games only a small part of the canvas really changes interactively. | |
Pekr: 8-Jan-2010 | Max continuead a bit: ---------------------- part of what I want to attempt for my host code work is to implement liquid and globs natively in R3. with access to AGG I could build the single most powerfull canvas engine in any language... we'd have absolutely nothing to envy to ANY other language, not even Apple's engine... as long as the AGG can render a few more things and add filters to AGG strokes. globs use AGG and allow events to be sent to individual AGG strokes. so you can "slide" a single line by clicking on it. the cool thing is that the input mask and display are separate... and you can implement any number of layers per display element that you want. | |
Cyphre: 21-Jan-2010 | Shadwolf, re glyph engine in R2: The glyph manager is used inside DRAW dialect. But the internals were never exposed at the REBOL laguage level. Should I really explain why? I hope not. R3 text improvements: As I wrote week ago here to you on AltMe there are no limits for you to make it happen. You can already build your own font engine+dialect in C/C++ or whatever and use it as EXTENSION for prototyping your contributions. If I was able to protoype using R2 dll interface you have now even more possibilities. So where is the problem? | |
Maxim: 24-Jan-2010 | glayout already implements 90% of what we want to build for VID 3.4, down to the dynamic layout engine, which is just about the same. | |
Henrik: 24-Jan-2010 | It's important to lift the UI out of the domain of appearance and into the domain of meaning. When your UI intelligently finds the default window close button or the first field in a form automatically, and automatically assigns correct keyboard navigation shortcuts, because of the underlying architecture's emphasis on meaning, there's no need to write any code to handle that at all. It's just there. You build your styles to adhere to the meaning that was setup by the GUI system. In the VID extension kit, this is done through flags and powerful face handling features. You don't need to add any code for that in the dialect. | |
Ashley: 25-Jan-2010 | I've spent a bit of time going over R3/View and believe it now has all the "building blocks" required to build a modern/fast gob! based GUI. The amazing thing is that these building blocks are the 10 natives that View adds [to Core]. They are: gob! caret-to-offset cursor draw effect map-event map-gob-offset offset-to-caret show size-text With these 10 natives (gob! is actually a type!) we should be able to construct simple but powerfull gob!-based GUIs with a smaller mezz footprint than R2. My preliminary conversion of RebGUI to R3 seems to take about 50% the code to do the same thing [compared to R2] ... very promising at first glance. To get a feeling for how tight the code can be the next post is the entire [skeleton] source of a working gob!-based GUI. | |
Henrik: 5-Feb-2010 | No, not wrong attitude. Styles are built by experts, i.e. people separated from those that build layouts. In VID, you don't have this distinction as you can manipulate styles directly in the layout, but you do, somewhat, in RebGUI. | |
Pekr: 5-Feb-2010 | btw - what I liked about Gab's VID was gob dialect to build multigob composited styles ... but maybe Carl's VID does not need that ... | |
Robert: 12-Feb-2010 | Cyphre, Henrik, Ladislav and I are going to pic up the current VID34 code and drive it forward. Our goal is to get it into a shape that it can be used to build apps. We will try to sync with Carl about our steps to avoid that we fork away. Overall we want to solve the current stuck situation and move forward. Our goal is to make VID34 useable for big apps. Focus is neither minimalistic nor "can be used by a child". This will be for the big boys. But still simpe to use and providing a bunch of features you need to make enterprise applications. | |
Henrik: 18-Feb-2010 | Cyphre is down with the flu right now and a sporadic internet connection due to snow, so I have no immediate status of what he's doing, other than waiting for the host kit, but what he's shown me, based on a separate AGG build, shows that there are a lot of ideas for what to do. | |
Pekr: 18-Feb-2010 | some two or more weeks ago he told me he is working on some demo, showing some AGG capabilities. That is probably stuff you saw? Will it be demoed? :-) Or is it just internal build to have some ground for further architecture improvement talks? | |
Henrik: 18-Feb-2010 | The separate AGG build is just there until he can get a hold of the host kit and to test ideas. | |
Gregg: 23-Feb-2010 | Yes, we are on the same page. I see this as built upon a messaging infrastructure. It doesn't need to be elaborate today, in what it supports, but the design should allow us to extend and build on it. i.e. we need a message bus that we can tap into, inside an app, interprocess, and distributed. | |
Maxim: 25-Feb-2010 | Liquid is the perfect engine to add to R3 GUI. After years of use in many different situations, I am now very confidents in its capabilities. Liquid is a generic engine, allowing you to tell DATA to message DATA. This means you can use the same system that you'd use for the GUI, for the data itself, and then just plug it together. Because Liquid was designed to allow very advanced procedural computation at a fraction of the complexity of other systems I've used I'd say its the best system we'll ever be able to build for R3. Wrapping liquids within faces and the view dialect is rarely more than 5-10 lines of extra code, but then, you don't need to write "action" code afterwards. | |
Maxim: 25-Feb-2010 | liquid even has data filtering mechanism built-in... so you can patch type conversion right in you data, for example, and connect any other compatible datatype without needing to build ANY extra code. Did you notice the detail... I didn't say type conversion in your GUI... so If your age is supposed to be an integer... pluging it into a field can actually make the field an integer field, without the field knowing anything about integers. :-) | |
Maxim: 26-Feb-2010 | had I tried to build this system without Liquid... -I'd probably have a very brittle textbox. -one that is VERY hard to improve. -it would lack a lot of the interactive aspects about it. | |
Steeve: 26-Feb-2010 | but then, I will build agents to optimize arrangements dynamicly | |
Steeve: 1-Mar-2010 | The principle is simple. At startup, I build an event time!, the I push it in the block located at system/view/event-port/state. And In my global event handler, each time I receive this event, I repush it immedialtly in the queue. I receive 1000 time! events per seconds in My tests, but it mights depend of the speed of your UC | |
Maxim: 3-Mar-2010 | AGG does a lot of computation, basically having access to this data in a consistent way. also not having to use composed/reduced blocks all the time. getting info like (x,y) coordinate of current bspline curve at length 100 pixels from an end. getting intersections between complex shapes like splines and polygons, xformed. bounding boxes of things, calculated points of displayed letters. if there where a unified method which just keeps the persistent data and we can move it around/manipulate it without needing to store it as a block of dialect, I could build my own specific and much cleaned up dialects or graphic engines without needing to go through the draw dialect like I do know. Myself, I have no use for most of the draw dialect, it just complicates my work, by getting in my way. | |
Cyphre: 3-Mar-2010 | ...also not having to use composed/reduced blocks all the time. If you had look at the concept demo I posted above there is no sigle forced compose or reduce(ofcourse except the possible internal native parser processing) applied on the DRAW block using this method. getting info like (x,y) coordinate of current bspline curve at length 100 pixels from an end. getting intersections between complex shapes like splines and polygons, xformed. bounding boxes of things, calculated points of displayed letters. Agreed, being able te get calculated coordinates of bsplines was planned addition, though not yet implemented. Not sure about the intersections. I think you would need to use external/third-party code for that. Bounding boxes, yes that is/was also planned. But these ale more like helper functions which doesn't need to have any 'draw elements' access. It's enough to provide whole/partial draw block to get proper results. if there where a unified method which just keeps the persistent data... The DRAW dialect block is the persistent data IMO. And you can build any other dialect/system over it. Don't be fooled by the result you are seeing. The internal structure of the data is almost identical as described in the DRAW block but in different format. All the calculations are done on-the-fly using diferent parts of the pipeline setup. For example: coordinates(almost same as in DRAW definition)->curve_converter->trasformer->rasterizer->renderer there is not any persistent storage between 'coordinates' and 'rasterize' phases (that would be memory overkill to store all the approximated curves etc.)..the result is directly rasterized on the fly. So in fact there is no static 'list of vertices or whateve' of the resulted image, everything is dynamic from the time you pass your DRAW definition to the engine. ...and we can move it around/manipulate it without needing to store it as a block of dialect, I could build my own specific and much cleaned up dialects or graphic engines without needing to go through the draw dialect like I do know. See the concept demo. I'm using one single DRAW block for all the objects and I can access/manipulate them without any complex code. There are no limits. Myself, I have no use for most of the draw dialect, it just complicates my work, by getting in my way. ok, so show me example of the form you would like to use for drawing. Is there any existing system which uses your expected behaviour? | |
Steeve: 6-Mar-2010 | My main idea (Already tried in the past ) is to build enough small primitives to allow to constuct all the standard styles without the need to add bloated hand written code. The primitives are context sensitives, meaning that blocks of primitives can be shared between several face without the need to bind/copy them for each face. | |
Pekr: 11-Mar-2010 | When will we be able to build more complex styles, as tabs, grids? I mean - is all infrastruture inside already? | |
Henrik: 13-Mar-2010 | instead of just hard coding those, I'd rather build a scheme to perform automatic shape/size/color/transparency transitions. | |
Steeve: 13-Mar-2010 | I use this to merge effects with existing draw blocks (it's called by the constructor of each animation). It's up to you to merge the effects with inner gobs if the style got many. The VID, I build, doesn't matter if the style contains several gobs. Thanks to my propagation model of events. I use the same idea than R2, events are propagated from inner gobs to outer gobs, so that i can have only one reactor on a parent gob (the container) which trigger the same actions on all its inner gobs. It's the thing i don't like in the current VID and it's why styles can't deal easly with several children gobs to my mind. | |
Steeve: 13-Mar-2010 | I use this to merge effects with existing draw blocks (it's called by the constructor of each animation). It's up to you to merge the effects with inner gobs if the style got many. The VID, I build, doesn't matter if the style contains several gobs. Thanks to my propagation model of events. I use the same idea than R2, events are propagated from inner gobs to outer gobs, so that i can have only one reactor on a parent gob (the container) which trigger the same actions on all its inner gobs. It's the thing i don't like in the current VID and it's why styles can't deal easly with several children gobs to my mind. | |
Henrik: 29-Mar-2010 | I've been working on docs (a dialect for image annotation in docs, actually) for a program, so not much here. Some things are actually very difficult to do in DRAW. I could use a pure alpha overwrite mode. I've posted a report in the AGG group about a bug in TRANSLATE. I might add something to specs, which I've been working with as part of writing docs: A way to use a layer to provide editing tools, i.e. box handles, rotate handles, swipe selections, moving and resizing, like you have in many graphics editors. I think this can be done in a generic way and would make it easy to build any kind of graphics or GUI editor. This is not something that we want to add now, but it's nice to think into the design, so that it's simple to do later (and to remove, when Carl announces that he doesn't like it). | |
Henrik: 2-Apr-2010 | the bug has already been fixed, so this will be available in an upcoming R3 build. | |
Robert: 29-Apr-2010 | Goal is to create all internal tools with R3 now (we call them Level-2 = L2 tools) and build the Level-3 (libs, frameworks, extensions, ...) in parallel. | |
Henrik: 29-Apr-2010 | I studied KHTML back when I thought we were going to build a new AWeb around it. it was incredibly much simpler than Gecko at the time. Don't know about webkit, though. | |
Maxim: 13-May-2010 | pekr, if we have 10 GUI frameworks its a good thing. each one adapted to different needs. its also a good way to attrack new developpers. look, this language has several complete GUI layers. I'd even like someone to build a native OS GUI extension. some people *require* that for their work. RT has one it advocates directly, but any others are a boon to the language. | |
Maxim: 13-May-2010 | what Robert describes also sounds like something they could easily adapt to have a web viewer for. a bit like a .net approach where you can build tools and distribute them in different architectures, suiting client needs. | |
Cyphre: 7-Jun-2010 | AdrianS: I don't think you can convert the Web people to Rebol easily just by replacing the JS in a browser. Better to build some 'cool' product based on Rebol with modular interface so people can play with it and build own 'gadgets' using dialects etc. I believe there are still some 'oportunities' to do it on misc embedded systems but first you need HostKit source and fully abstracted Rebol dll versions compiled for such systems. | |
Maxim: 7-Jun-2010 | people are also impressed when I build a parse dialect in ten lines in 5 minutes and show them that its actually spitting new structured data out of other data. | |
Maxim: 7-Jun-2010 | Remark is my solution for web stuff.. its basically what you describe above. One engine to manage all aspects of a web application. Using rebol dialects compiled in real-time, you can build any data. but the Dialects can be embeded within any other file, using a twist on the html friendly <tag> notation. | |
Maxim: 7-Jun-2010 | that's what I mean... but it also means that we could build nice web dev tools using R3, which could cross-compile as desktop and web apps. | |
Graham: 24-Jun-2010 | I'd like to know, inter alia, if one can build a progress meter for downloads | |
Henrik: 11-Jul-2010 | Some resulting exes: 07/10/2010 12:45 PM 267,776 r3.exe 07/10/2010 12:46 PM 28,672 r3core.exe 07/10/2010 12:34 PM 393,216 r3lib.dll You can build an R3/Core without AGG. | |
shadwolf: 15-Jul-2010 | i think cairo can be fun but then the question is always the same will the dialect build to interface it with rebol will cover the whole thing or just cover the ground capabilities | |
Henrik: 22-Jul-2010 | actually it's an older build with some modifications. I'm not sure how useful it is in general. | |
Henrik: 10-Aug-2010 | when it gets important enough to fix. right now the priority is to get things working in the first place. we have an app to build and sell. | |
Henrik: 20-Aug-2010 | so once again: complaints about issues that have no relevance to the current state of the R3 GUI. I would rather have wishes for dialog handling, form validation, how the help system should work and how to build more intelligence into the GUI. | |
Henrik: 22-Aug-2010 | Our primary concern is that RM Asset needs to use R3 very soon for a production app for a customer, so the focus is to make all things that are normally handcranked in VID and RebGUI, such as form validation, handling of database records and a complete UI test framework fully automatic. If it takes 2 days instead of 7 to build and test a GUI, Robert saves money and can ship earlier. Over the past year, with the rather big RebGUI app, NLPP, that RM Asset has built, we've learned exactly where we need to make things better and what works OK and certain delays, because of GUI architecture limitations have cost money. It's no longer for convenience or for advertizing the GUI as easy, but hard money savings are involved. | |
Henrik: 22-Aug-2010 | no, it's both things. The GUI system must be easy and quick to work with. That's how we build apps. | |
Henrik: 25-Aug-2010 | it'll be a while yet. have been busy moving projects to RM Asset's SVN server and now am working on a build system, which is why I was asking for prebol for R3 in the REBOL3 group. | |
Henrik: 26-Aug-2010 | Actually there are several changes by Bolek and Cyphre, that I've not yet studied, but much of the work that was handled by LAYOUT before is now relegated to PANEL and GROUP, which is why we talk so much about them and not a central LAYOUT function. They call various subfunctions that specifically focus on creating faces and laying them out and resizing them. So the styles themselves are capable of custom layouts and resizing mechanisms and also mechanisms such as face init and triggers. So that means you are no longer a "slave" of the LAYOUT function. That's also why: 1. I was talking a while ago about that you can build a style that emulates VID, complete with a dialect, or replace the layout mechanism with your own, by rewriting PANEL or GROUP or adding new panel styles. 2. That whenever you want to do a new thing, you should make it as a style. That's where you start. | |
Henrik: 2-Sep-2010 | R3 GUI now builds and runs with the new build system. Nice and clean. :-) | |
Henrik: 2-Sep-2010 | it's not a formal release. I decided to do this, because the build system became available for use internally today. | |
Henrik: 8-Sep-2010 | graham, and I posted all the relevant information to validation and dialogs a week ago, the build system 2 weeks ago. zero feedback. | |
Gregg: 8-Sep-2010 | Henrik, sorry to ask but where is the build information? I scanned back to mid-August but didn't find it. | |
Henrik: 9-Sep-2010 | new build released at http://rebol.hmkdesign.dk/files/r3/gui/r3-gui.r3 This one contains material system and some bug fixes. Requires A105. | |
AdrianS: 10-Sep-2010 | With a107 (that I build with the MS compiler), go.r3 seems to run quickly when launched, but slows down dramatically after just a little bit of mouse movement. If I stop moving, the speed resumes after a little while. I don't remember seeing this in older builds. Has something changed wrt event processing? | |
Maxim: 14-Sep-2010 | a question... is there a single place where a gob is destroyed (maybe a callback or some method) within the host-kit? just so its more invisible, when I need to detach a gob from the OpenGL rendering context... at this point I have all I need to build an OpenGL gob.. but nothing to get it automatically cleaned up. | |
Henrik: 18-Sep-2010 | http://rebol.hmkdesign.dk/files/r3/gui/r3-gui.r3 Newer version too. Sorry about the ballooning in size, but this is due to a change in the build system. | |
Henrik: 21-Sep-2010 | I'm working on the build system right now. | |
Pekr: 21-Sep-2010 | re build system - will we be able, in future, to bundle only styles being found in source-code, or selected ones? I can imagine having library of tens of widgets/styles, while my app might not require all of them? So far, R3-GUI is still small, so it does not matter, hence regard my question being just theoretical :-) | |
Henrik: 21-Sep-2010 | the build system will allow that, but the question is if the source will be published like that. I hope it will, but I would not rule out that many styles will depend on eachother in the future. | |
Henrik: 21-Sep-2010 | I'm preparing a different build script, so it will appear uncompressed. Should be up within a day or so. | |
Henrik: 21-Sep-2010 | new build is up with uncompressed source: http://rebol.hmkdesign.dk/files/r3/gui/r3-gui.r3 | |
Henrik: 21-Sep-2010 | style building has only changed with regards to resizing (which I haven't entirely figured out yet), but otherwise remains the same, so feel free to build some styles. | |
Henrik: 24-Sep-2010 | yes, correct, however, I'm going to provide a new build in just a moment. | |
Pekr: 24-Sep-2010 | uncompressed build is very welcome - we can look at sources here or there, if there is a need ... | |
Graham: 24-Sep-2010 | REBOL [ title: "Untitled" build-date: 24-Sep-2010/8:46:56+1:00 build-flags: [console log] revision: 0 release-type: release language: en ] | |
Henrik: 24-Sep-2010 | the revision 0 thing in the header will be fixed, once the build system can get a revision ID from SVN. if anyone knows how to do that, I would appreciate it. | |
Henrik: 25-Sep-2010 | yes, I'm sure just something was disabled. I built a new version today, but it's less stable than the current build, so I'm not going to release it. | |
Pekr: 29-Sep-2010 | Tried some latest build today, and the problem with wrong placement of caret is gone now .... | |
Pekr: 5-Oct-2010 | Henrik - new build possible? Rebolek told me, there should be new, improved version of area available. I would like to test :-) | |
Henrik: 6-Oct-2010 | public repository is not likely to happen, as RM Asset keeps private sources in the same repository as the R3 GUI to accommodate private projects and build system, but I will continue to release the r3-gui.r3 file until a better arrangement is made. | |
Robert: 7-Oct-2010 | We are still buildin a bunch of infrastructure on our side, so that we can release stuff faster, know it will build for you, generate automatic change-logs etc. | |
Henrik: 11-Oct-2010 | Pekr, just worked toward getting the validation examples working. Fixed some bugs in this regard. If anything, try to build your own validation example. I'll be working on updated docs, so they correspond to this prototype. | |
Maxim: 20-Oct-2010 | that's already limiting in my POV. elixir actually allows you to build the system that you describe interactively (In theory, not in practice, since its really not done yet( | |
Maxim: 20-Oct-2010 | with elixir you can build google-wave like concurrent user apps with just a few nodes. then you can wrap them in a pool and just provide the pool as the data to another node. it is even project that we will be able to reverse-script a pool and provide its structure as an output, so that you can actually share the pool's structure in real time along with the data it is linked to. | |
Maxim: 20-Oct-2010 | this is known as a "process" in elixir... scripts which build up nodes and link them up in a specific way. tools are processes which have a persisten interface (cli or graphical) | |
Henrik: 3-Nov-2010 | http://94.145.78.91/files/r3/gui/247.png Tab boxes now support drag and drop. I'll provide a built version tomorrow as I found a build problem tonight, so you can try it out. | |
Henrik: 4-Nov-2010 | seems there are some issues with LOAD and SAVE in A110, so no r3-gui build today. | |
Henrik: 18-Nov-2010 | I cannot build right now, so you might as well play with that one. | |
Henrik: 18-Nov-2010 | Pekr, A110 doesn't work with the build system, so no new releases recently. Pace is the same as before. | |
Henrik: 18-Nov-2010 | Anyway: Just start using the GUI now. The style browser is built, I have a build system test GUI also and both work fine, so what we need is input on things that are silly or missing in the GUI now. | |
Rebolek: 19-Nov-2010 | It may be good idea to build new one. Keyboard navigation improved a lot and can be good for testing key events. | |
Henrik: 19-Nov-2010 | ok, I'll try to build with A109 to circumvent the build problem. | |
Pekr: 21-Nov-2010 | I would try to build A110, but I am not able to get sources from Carl's git. I tried to download his .zip archive, changed to TO_WIN32 in the .h config file, but it does not build - probably a linux distro ... | |
Andreas: 22-Nov-2010 | You'll need a "/View" build of A110, such as: http://94.145.78.91/files/r3/gui/r3.exe http://94.145.78.91/files/r3/gui/r3lib.dll | |
Cyphre: 22-Nov-2010 | Henrik, so far there is no difference in the 'about' output when you build r3/Core or r3/View exe. Even system/product is always set to 'core . Something that needs to be solved by beta. | |
BrianH: 8-Dec-2010 | You need to get a GUI build and download Henrik's compiled R3 GUI code. Look above here for the links. | |
Group: !REBOL3 Modules ... Get help with R3's module system [web-public] | ||
BrianH: 22-Oct-2010 | Over the last day I have been fleshing out the test suite for the new module system. Almost all features have corresponding tests now. As soon as we have complete coverage I will try to get the tests published somewhere official. FYI, alpha 109 fails a lot of the tests, but also in the last day I fixed all of the errors that were causing test failures. In theory - I need a new build with the fixes to be sure, but code tracing says the behavior matches the tests. In any case, the test suite will have full feature coverage before alpha 110 comes out. | |
Group: !REBOL3 Source Control ... How to manage build process [web-public] | ||
Carl: 28-Oct-2010 | Ok, so the subject of the discussion is how to move the host-kit build and its related processes to a more manageable method. | |
Andreas: 28-Oct-2010 | And from there on, we can have build bots which pick up any new export and build it for their platform. Build results are reported back somewhere (email, static website on the bots which gets aggregated elsewhere, a simple CGI, R3 chat, ...). | |
Andreas: 28-Oct-2010 | Which is why it's also important to realise that those build bots need not necessarily be public. They could well be Carl's own machines standing at home which put the final binary in a central place for Carl to use. | |
Andreas: 28-Oct-2010 | If that's not immediate, you can obviously still use your own build stuff (Visual Studio projects, whatever), and as long as you regularly keep the sources up to date by committing, the builders will notify you anyway if the external build mechnisms got out of sync. | |
Andreas: 28-Oct-2010 | Use msysgit on Win32 and the packages provided with your system (or build from source) on everything else. | |
Henrik: 29-Oct-2010 | Pekr, that's simply a snapshot, which takes a minute to do, thanks to our build system. | |
Maxim: 29-Oct-2010 | once we have ssh on r3 (in whatever form) I think we should be able to build the entire git toolset with REBOL at a fraction of msys stuff. I already did a complete source control system (though with a completely different model) called distro-bot and its hardly 1GB! | |
BrianH: 29-Oct-2010 | Yes, but on topic for managing the build process. Hence the question. | |
Carl: 29-Oct-2010 | So, failed to obtain git binary or build git from source. | |
Carl: 29-Oct-2010 | It should be possible to build it from source. I need git on at least one primary build system here. | |
Carl: 29-Oct-2010 | I can write a small REBOL script to sync the source over to the other build systems... which will probably never have the ability to run git. | |
Group: !REBOL3 Proposals ... For discussion of feature proposals [web-public] | ||
BrianH: 11-Nov-2010 | Well it comes down to this: Functions are defined lexically. Though they are called dynamically, they aren't called until after they have already been bound, definitionally. But as a side effect of tasking, those bindings are stack-relative, and those stacks are task-local. But random blocks of code outside of functions are bound to object contexts, and those are *not* task-local. So that means that the old R2 practice of calling shared blocks of code is a really bad idea in R3 if any words are modified, unless there is some kind of locking or synchronization. This means that those blocks need to be moved into functions if their code is meant to be sharable, which means that at least as far as RETURN and EXIT are concerned, they can be considered lexically scoped. The advantage that we would get from being able to call a shared block of code and explicitly return in that block is moot, because we can't really do that much anymore. This means that we don't lose anything by switching to definitional code that we haven't already lost for other reasons. At least as far as functions are concerned, all task-safe code is definitional. Loops are also defined lexically, more or less, and the rebinding ones are also task-safe because they are BIND/copy'd to a selfless object context that is only used for that one call and thrown away afterwards. And most calls to loops are task-safe anyways because they are contained in functions. However, the LOOP, FORALL, FORSKIP and WHILE loops do not rebind at the moment. We actually prefer to use those particular loops sometimes in R3 code because they can be more efficient than *EACH and REPEAT, because they don't have that BIND/copy overhead. Other times we prefer to use *EACH or REPEAT, in case particular loop fits better, or has high-enough repetitions and enough word references that the 27% overhead for stack-local word reference is enough to be more than the once-per-loop BIND/copy overhead. Since you don't have to move blocks into *loops* to make them task-safe, you can use blocks referred to by word to hold code that would be shared between different bits of code in the same function. This is called manual common subexpression elimination (CSE), and is a common optimization trick in advanced REBOL code, because we have to hand-optimize REBOL using tricks that the compiler would do for us if we were using a compiled language. Also, PARSE rules are often called from loops, and they are frequently (and in specific cases necessarily) referred to by word instead of lexically nested; most of the time these rules can be quite large, maximizing BIND/copy overhead, so you definitely don't want to put the extensive ones in a FOREACH or a closure. Switching to definitional break would have three real downsides: * Every loop would need to BIND/copy, every time the loop is called, including the loops that we were explicitly using because they *don't* BIND/copy. * Code that is not nested in the main loop block would not be able to break from that loop. And code that is nested in the main loop would BIND/copy. * We can in theory catch unwinds, run some recovery code, and send them on their way (hopefully only in native code, see #1521). Definitional escapes might be hard or impossible to catch in this way, depending on how they are implemented, and that would mean that you couldn't recover from breaks anymore. The upside to definitional break would be that you could skip past a loop or two if you wanted to, something you currently can't do. Another way to accomplish that would be to add /name options to all the loop functions, and that wouldn't have the BIND/copy overhead. Or to use THROW or THROW/name. The situation with THROW is similar to that of the non-binding loops, but more so, still task-safe because of functions. But CATCH and THROW are typically the most useful in two scenarios: * Escaping through a lot of levels that would catch dynamic breaks or returns. * Premade custom escape functions that might need to enforce specific semantics. Both of these uses can cause a great deal of difficulty if we switched to definitional throw. In the first case, the code is often either broken into different functions (and thus not nested), or all dumped into a very large set of nested code that we wouldn't want to BIND/copy. Remember, the more levels we want to throw past, the more code that goes into implementing those levels. In the second case definitional throw would usually not work at all because the CATCH and the THROW would contained in different functions, and the code that calls the function wrapping the THROW would not be nested inside the CATCH. So you would either need to rebind every bit of code that called the THROW, or the definitional THROW would need to be passed to the code that wants to call it like a continuation (similar concept). Either way would be really awkward. On the plus side of dynamic (whatever), at least it's easy to catch an unwind for debugging, testing or recovery purposes. For that matter, the main advantage of using THROW/name as the basic operation that developers can use to make custom dynamic escape functions is that we can build in a standard way to catch it and that will work for every custom escape that is built with it. The end to the arms race of break-through and catch. | |
BrianH: 12-Nov-2010 | You don't lose anything that you haven't already lost for other reasons, and it is possible (in native code) to build in acceptable workarounds for its weaknesses, so there's no significant downside to definitional return (except the work Carl would have to do to implement it). | |
Maxim: 12-Nov-2010 | I am thinking that SELFLESS could be used to build classes if we specified self as a word. |
1901 / 2246 | 1 | 2 | 3 | 4 | 5 | ... | 18 | 19 | [20] | 21 | 22 | 23 |