ticket summary component milestone type owner status created _changetime _description _reporter 180 Add support for DTrace build scripts 8.1.0 todo new 2017-10-09T20:22:15+01:00 2017-10-13T10:46:02+01:00 "Smalltalk/X has very basic support for [[https://sourceware.org/systemtap/|SystemTap]] for some time but we can do better. We should use probe definition file (`.d`). This would have several advantages: * it would make it compatible with *BSD & macOS DTrace * it would allow to use `..._ENABLED()` macros when appropriate. * probe definition file makes a good place to document which probes are available and what's the meaning of the parameters (if any) The downside of this is that we'd have to provide our own ""fake"" implementation of `dtrace` command to generate empty macros on platforms with no DTrace support. Ideally this fake implementation should be implemented in Ruby as Ruby is needed to build Smalltalk/X anyway. " jan vrany 258 Review new implementation of `Win32OperatingSystem >> pathOfCommand:` default todo new 2019-01-18T12:57:21Z 2019-01-21T14:36:57Z "I have rewritten `Win32OperatingSystem >> pathOfCommand:` but I'm not much of a Windows expert. This patch should be reviewed. Patrik, can you have a look? " jan vrany 237 Fix namespaces, private methods and global variables default todo new 2018-07-23T11:08:49+01:00 2018-07-23T11:08:49+01:00 "This is a very **complex** issue and represents huge amount of work. I think it would be nice to have it here as a reminder that this is something that is ""hanging"" there. TODO: - figure out new concept of `namespaces` - major refactoring in `stc` (current implementation is buggy) - major refactoring in `VM` - all code around it " patrik.svestka@… 231 [windows-only] I like the smalltalkx.svg icon, you can't get svg to work with windows. default todo testing 2018-07-18T11:40:13+01:00 2018-10-16T09:23:06+01:00 "I have taken the liberty to convert the `*.svg` format into `*.png` and multiple `*.ico* Would it be possible to add it to the project?" patrik.svestka@… 222 "Switching view Category to Package should focus on the ""main"" package" default todo reopened 2018-05-28T10:33:54+01:00 2018-06-01T09:00:01+01:00 "How to reproduce the error? 1. Open a browser (default is a `Category` view) 2. Search for a selector via `ctrl + shift + t` e.g.`asCollectionOfSubCollectionsSeparatedByAnyForWhich` 3. Then switch to `View\Package` 4. The first selected line is on `Monticello` but should be on `libbasic` Here is a screenshot: [[Image(ticket:222:multiple_packages_selected_after_search.png,1024px)]] " patrik.svestka@… 220 "Refactoring to ""know"" about subclasses (packages)" default todo new 2018-05-24T10:40:09+01:00 2018-05-24T11:07:34+01:00 "If you refactor code e.g. move method to the subclass or rename method in subclass the code ends up in `__NoProject__` with complete project structure. Current workaround: Move all methods (protocols) to correct package before doing commit. An Screenshot: [[Image(ticket:220:checking_no_project.png,1024px)]] " patrik.svestka@… 204 Check integer conversions default todo new 2018-04-13T09:35:39+01:00 2018-04-13T09:35:39+01:00 Issue #200 was caused by using too narrow integer type for indexing. There may be other cases like this, though. One can use GCC's `-Wconversion` to check for this in other code. Ideally, system should compile with -Werror=conversion`. jan vrany 187 Add (better) support for themes to code editor default todo new 2017-12-05T11:35:35Z 2018-10-12T08:45:04+01:00 "Currently, one can only change syntax highlighter colors but many other remains hardcoded or cannot be altered easily (like background, selection color, cursor color and so on). The aim of this is to improve the support for themes and make it easy (easier) to provide new code editor themes and document how to do so. This is a ""sister TODO"" to #102." jan vrany 181 "New configuration settings for modes: ""Sheet of paper"" and ""Text editor""" default 8.1.0 todo new 2017-10-11T15:05:24+01:00 2017-10-16T07:20:31+01:00 Create a new setting for current mode `Sheet of paper` and create a new setting for `Text editor` which would include currently opened tickets #165, #131, etc. patrik.svestka@… 168 HiDPI Cairo scaling default todo new 2017-07-31T13:08:48+01:00 2017-07-31T21:26:51+01:00 Is it possible to have Cairo HiDPI scaling? It would be very useful to have it as the age of high-resolution displays is here. patrik.svestka@… 146 Revise RBContainsRule default todo new 2017-05-19T22:32:55+01:00 2017-05-19T22:32:55+01:00 "In my opinion, `RBContainsRule` should not bark on following code: {{{ foo: x | y | y := x detect:[:e | e odd ] ifNone:[ ^ nil ]. ^ y + 1. }}} Compare the implementation with Pharo one. " jan vrany 102 "Create a ""dark"" theme for Smalltalk/X" default todo patrik.svestka@… assigned 2016-07-19T14:09:06+01:00 2017-11-27T11:36:51Z "Pehaps, something based on Darkula which seems to be quite popular these days. Any taker? :-) See [[https://github.com/JetBrains/intellij-community/blob/master/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/darcula.properties|https://github.com/JetBrains/intellij-community/.../darcula.properties]]" jan vrany 101 Improve support for view renderers default todo new 2016-07-19T14:05:43+01:00 2016-07-19T14:05:43+01:00 "...i.e, improve ''SimpleView>>renderOrRedraw'': This (probably) means: 1. Define ''!SimpleView>>renderOrRedrawX:y:width:height:'' which by default fallbacks to ''!SimpleView>>redrawX:x:width:height:'' 2. Call the above from ''!SimpleView>>exposeX:''... 3. Define renderer protocol. This should allow for decoupling widget rendering from the view itself and customize it according to application and/or theme needs. However, changes to individual widgets might be needed to allow for actual customization as the widget rendering code is not well structured. But this would be a first step. " jan vrany 69 On Linux, use memcpy(), memset() and memchr() default todo new 2015-12-05T07:38:52Z 2015-12-05T08:12:19Z "...for those are usually twice as fast as hand-optimized C code. Not so on Windows (perhaps MS libc's implementation is not as good as GLIBC's). See results of [[https://bitbucket.org/janvrany/jv-knowledgebase/src/tip/C/bench-memchr.c|bench-memchr.c]] and [[https://bitbucket.org/janvrany/jv-knowledgebase/src/tip/C/bench-memcpy.c|bench-memcpy.c]] stx:stc commit 5ac5233bd4c4 enables them, but something then breaks (not usage of memchr(), though). The problem manifests itself in a funny way - some UI stylesheets are not properly initialized, code editor does not show some lines which appear when you scroll and so on. To check, try open settings dialog with some checkboxes. Commit 5ac5233bd4c4 has been reverted (4d7bb8c70853)" vranyj1 57 Keep stack of shadowed method instead of shallow list. default todo new 2014-10-06T20:56:01+01:00 2014-10-06T21:05:30+01:00 "Current scheme of handling shadowed methods does not handle fowllowing case: 1. ClassA (package A) >> foo 2. extension shadowning ClassA>>foo from package B is loaded. 3. extension shadowning ClassA>>foo from package C is loaded. SCM fileout does not handle correctly the case of committing package B. For proper package unloading, a stack of shadowed method has to be managed." jan vrany 54 Better support for instvar modification breakpoints default todo new 2014-07-30T09:59:56+01:00 2014-07-30T10:01:05+01:00 "Actually, I found modification trap not very useful because it triggers break after all method's code is executed, so you don''t really know where the instvar was modified. If it is modified in two branches, you don't know which one did it. It's even worse when there are blocks involved - at the time of breakpoint the most interesting part of the stack is gone. If the method modifies the instvar in a block that outlives the method, you don't get breakpoint at all. Instead of generating anonymous subclass, it should instead instrument methods and inject guarding code before each assignment. Implementation-wise I think it's even simpler and easier to understand than current code." jan vrany 50 CVS Commit: do not pre-fill tag from previous commits default todo new 2014-07-25T12:28:18+01:00 2014-07-25T12:28:18+01:00 "> I've just found that CVS commit dialog remembers the tag. I don't think ?> this is a good idea, it is very easy to accidentally tag something > completely unrelated because some couple days ago you commited something > with that tag. > Wouldn’t it be better to remember tags, but present them as combo > initially empty so user have to explicitly specify if (possibly by > choosing from combo)? > yes, a good idea." jan vrany 35 Selection highlighting in CodeView2 default todo new 2014-02-25T16:04:05Z 2014-02-25T16:04:05Z "> But if I select some string (just select), wouldn't it be nice if it > could then also highlight (with a faint color, of course, such as light > yellow) all matching strings in the code. That would be very helpful, if > text is edited with select-type-AGAIN-AGAIN... (which we often do...)" jan vrany 22 Support for simpler package deployment default todo new 2013-12-20T10:48:11Z 2013-12-20T10:51:45Z "Deploying Smalltalk/X package should be simpler, ideally one file like in Java or GNU Smalltalk. The file should include code, source (if desired), reources (translations, icons, ...) There are two options: * Bundle all files into single .zip file, including .dll/.so. Maybe it could be compatible with .mcz as used by squeak/pharo. * Deploy as single .dll/.so and add ZIP archive with sources and other resources as a data section to that .dll/.so." jan vrany 21 Better font rendering on X default todo new 2013-12-19T15:33:51Z 2014-01-04T13:05:43Z "On X Window, an ancient core X API is used to draw text. The result is bad as it has no support for freetype fonts, antialiasing, hintting and so on. While the best would be yo use [[http://www.pango.org|PANGO]] library, this is quite some work. As an transitional solution one may use Xft library. The idea here is to create a special {{{XftFont}}} class and use custom font rendering (simular to BitmapFont). Later on, the support could be merged right into {{{XWorkstation}}}. " jan vrany 20 Redesign (and reimplement) CodeView2 default todo new 2013-12-17T20:09:25Z 2013-12-20T11:25:43Z "Current {{{CodeView2}}} has several flaws which are hard to fix with current design. It has to be redesigned to meet new requirements: * General * Make sure it performs well with large files * Introduce {{{DamageArea}}} object which will be passed to services to allow for fine-grained rendering, incremental re-highlighting etc. * Gutter * Higher-level API for line annotations (breakpoints, lint warnings,...) that allows composition of two or more services (problem of breakpoints & lint annotations in current implementation - when there's a lint warning, you cannot add breakpoint. * API to register custom menu items to gutter/editors' context menu. * Fix for diff Please, feel free to comment on current flaws/requirements for next version. " jan vrany 9 Implement ephemerons default todo new 2013-11-28T12:23:56Z 2013-11-28T12:23:56Z Ephemerons are needed to efficiently implement Java finalization scheme. And handy in other cases. too :-) vranyj1 167 Lock symbol database file only when its being updated stc todo new 2017-07-28T13:18:29+01:00 2017-07-28T13:18:29+01:00 "As of now, stc locks symbol database file while it's running. This prevents parallel builds as more than one stc may be accessing the symbol database file. In most case the symbol is found in the database so no update is needed. stc should use shared read lock while reading it and exclusive write lock when updating it to allow parallel builds. --- The functions that have to be fixed are: * `lockSymFile()`, `unlockSymFile()` (use OS-provided file locks) * call `lockSymFile()` and `unlockSymfile()` with read lock when reading it in `readSymFile()` and use write lock when updating it in `findSymAddr()`. As for the locking, on POSIX systems use POSIX file locks, on Windows, check following example: {{{ // crt_fsopen.c #include #include #include int main( void ) { FILE *stream; // Open output file for writing. Using _fsopen allows us to // ensure that no one else writes to the file while we are // writing to it. // if( (stream = _fsopen( ""outfile"", ""wt"", _SH_DENYWR )) != NULL ) { fprintf( stream, ""No one else in the network can write "" ""to this file until we are done.\n"" ); fclose( stream ); } // Now others can write to the file while we read it. system( ""type outfile"" ); } }}} " jan vrany 95 Convert Aidaweb from SVN repository to Mercurial one stc todo new 2016-06-21T13:50:39+01:00 2016-06-21T13:50:39+01:00 "There is an old port from SVN (3 packages total). Could you please conver it to Mercurial?" patrik.svestka@… 174 Implement incremental oldspace compaction virtual machine todo new 2017-09-03T08:19:54+01:00 2017-09-03T08:19:54+01:00 "Implement incremental oldspace compaction. Following looks simple enough: ''An Algorithm for Parallel Incremental Compaction'' Ori Ben-Yitzhak, Irit Goft, Elliot K. Kolodner, Kean Kuiper and Victor Leikehman" jan vrany