I would have put the M after the other letter because it's really a
subsidiary option.  If it's first it rather 'M'asks the main option?
 
Mike


  _____  

From: Rony G. Flatscher [mailto:rony.flatsc...@wu.ac.at] 
Sent: 08 February 2023 14:16
To: oorexx-devel@lists.sourceforge.net
Subject: [Oorexx-devel] Planning to add multithreaded (concurrent) tracing
(Re: RFC for feature request "794 Concurrency request"



Coming back to this RFE from 17 months ago which I would like to add to
trunk. Without it one can hardly use TRACE for debugging multithreaded
programs in a Rexx-like, i.e. easy manner.


Currently having tried to incorporate the feedback about too many
whitespaces between the new columns (Rexx interpreter instance number,
Thread number, Activity number, reserved object pool).


There was another idea about making this concurrency/multihreaded trace
available without a need to define an environment variable
RXTRACE_CONCURRENCY before starting a Rexx program. This post is about ideas
of how to activate and deactivate concurrent tracing at runtime (either via
the TRACE keyword instruction or the TRACE()-BIF) in a manner that is
intuitive and easy to remember.


One possibility would be to introduce new alphabetic options, this time with
two letters by prepending the letter 'M' (for multithreaded as the letter c
is already used for tracing commands and may therefore be irritating) to the
existing alphabetic characters, hence defining the following semantics:



Trace
        Option, turn off MT
        Option, turn on MT
        
All
        A
        MA
        
Command
        C
        MC
        
Error
        E
        ME
        
Failure
        F
        MF
        
Intermediates
        I
        MI
        
Labels
        L
        ML
        
Normal
        N
        MN
        
Off
        O
        -
        
Results
        R
        MR
        

        
        
        

This would have the benefit that anytime it becomes possible to turn on and
to turn off multithreaded/concurrent tracing at runtime.


What do you think?

---rony

P.S.: The "fallback" would be to just add it as is, i.e. using the
environment variable RXTRACE_CONCURRENCY, making the
multithreaded/concurrent tracing a global option that needs to be set before
running a Rexx program. 





On 05.09.2021 14:12, Rony G. Flatscher wrote:


Almost a week ago Jean Louis Faucher registered feature request "794
Concurrency request", cf.

 <https://sourceforge.net/p/oorexx/feature-requests/794/>
<https://sourceforge.net/p/oorexx/feature-requests/794/> together with a
patch that implements the

feature request. So far there have been no comments, hence "requesting for
comments (RFC)" here as

it may be the case that the RFE has been overlooked.



---



IMHO this RFE is incredible helpful for debugging multi-threaded Rexx
programs and for understanding

how ooRexx dispatches multithreaded code.



The way Jean Louis devised the implementation has practically no impact on
the interpreter (unless

one defines an environment variable "RXTRACE_CONCURRENCY=on" modelled after
the existing

"RXTRACE=ON" environment variable in which case helpful information gets
generated for prefixing

each trace output statement) makes it easy even for beginners (= students)
to get insight and

understand how ooRexx executes multithreaded programs. Some problems rooted
in multithreaded Rexx

code can be quickly located, understood and resolved with this feature.



Having tested this concurrency trace feature with the most challenging
JavaFX ooRexx programs I have

been really impressed with the results. Using the ooRexx program
"samples/tracer.rex" (included in

the patch) to render the massive concurrency trace output of some JavaFX
ooRexx programs to csv and

importing the concurrency trace into a spreadsheet (e.g. Excel) makes it
possible to analyze such

massive concurrency traces in every possible detail using the spreadsheet
features (e.g. filtering

for a specific ooRexx interpreter instance or specific threads, pivots and
the like). Therefore I

uploaded one such test to this RFE such that one can directly get at the
massive concurrency trace,

the csv file created by "tracer.rex" from it and an Excel spreadsheet which
was used to import the

generated csv file. (I wished this feature had been available when devising
some of the BSF4ooRexx

JavaFX samples, which would have saved me literally weeks of debugging!)



The patch implementing RFE 794 makes it really easy for ooRexx programmers
to understand and to

debug multithreaded ooRexx programs, saving them a *lot* of time trying to
understand what happens,

how concurrent statements get executed by the interpreter(s) and locating
coding errors!



---rony




_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to