1 / 39

UNIX Development Environment

UNIX Development Environment. Andy Shiers COO andys@dyalog.com. Supported Platforms. AIX 12.1 & 13.0 built for p3, p5, p6 built on p6/AIX6.1 13.1, 13.2, 14.0 built for p5, p6, p7 built on p7/AIX6.1. Supported Platforms. Linux Should work on any recent Linux distribution

dior
Download Presentation

UNIX Development Environment

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UNIX Development Environment Andy Shiers COO andys@dyalog.com

  2. Supported Platforms AIX 12.1 & 13.0 built for p3, p5, p6 built on p6/AIX6.1 13.1, 13.2, 14.0 built for p5, p6, p7 built on p7/AIX6.1

  3. Supported Platforms Linux Should work on any recent Linux distribution Supported on x86/x86-64 at the moment We are considering System p/System z using RIDE Liam has more to say tomorrow ! Get in touch if it doesn’t No promises/guarantees !

  4. Supported Platforms Linux distributions Dyalog has tested/used Ubuntu/MINT RHEL/Centos openSUSE Fedora Debian (tryapl.org)

  5. Driving APL on UNIX Remote terminal emulator Windows/PuTTY Terminal window Tested under KDE/GNOME/Unity Serial terminal Classic only – is anyone still using them ?

  6. PuTTY Windows client Supports ssh/telnet Supports 256 colours APL support needs UnicodeIME and APL385 font installed on Windows machine http://www.dyalog.com/resources/ Works with Classic versions too

  7. Terminal Window Tested only under Linux Keyboard support now included in recent Linux distributions - eg Ubuntu 12.04 openSUSE 12.2

  8. Terminal Window Very easy to configure under KDE4 GNOME/Unity requires greater effort - more info at http://forums.dyalog.com/viewtopic.php?f=20&t=210 (forums → Unix and Linux → Keyboard setup on Linux)

  9. Do You Need Input ? TryAPL runs as a service Runs a workspace $DYALOG/dyalog.rttryaplws0<&- 1>&- 2>&- & No input No session output All output written to logfiles

  10. TryAPL That’s the theory - actually: mapltryaplws </dev/null >tryapl.out 2>&1 & Developed under Windows, run on Linux Set up as a service in /etc/init.d VM with 9GB disk (<2GB in use) and 512MB RAM

  11. I/O from scripts mapl <inputfile >outputfile 2>errfile mapl <inputfile >outputfile 2>&1 Unicode: mapl <<!!Unicode (+2⎕nq'.' 'GetBuildID'),(‘.'⎕wg'APLVersion')[2 1 3 4] ⎕off !!Unicode Classic: mapl <<!!Classic ^O(+2^NLnqK.K K^OGetBuildID^NK^O),(^NK.KLwgK^OAPLVersion^NK^O)[2 1 3 4] )off !!Classic

  12. Redirecting Status Window Output Verbose error messages are written to terminal device by default Not to the session, so refresh will remove them Use APLSTATUSFD=stream_number_to_redirect export APLSTATUSFD=18 mapl 18>statuslogfile mapl 18>/dev/null Need $APLTRANS/file (by default) available APLT18=some_other_translate_table

  13. Redirected I/O echo "2+2" | apl 4 Watch this space – though not in 13.2 ..

  14. “New” Features These are UNIX-specific or tailored to UNIX versions New ≡ Andy hasn’t mentioned them before (some present in 12.1!)

  15. UNIX IUG -ish The Dyalog APL for UNIX Installation and User Guide will be published soon Includes details of installing under UNIX relevant environment variables keystrokes: what they are and what they do summary of how to “drive” Dyalog APL for UNIX

  16. Questions questions .. Is there anything else you would like to see included in the IUG ? We are considering renaming the mapl script to apl what is your opinion ? Come and talk to me or email me

  17. Thread Switching Thread switching occurs at the 6-space prompt Allows processing to continue in non-suspended threads Present since 12.1 Keyboard input pauses background threads

  18. ⎕SE namespace Present in 12.1 Empty, unable to save or load session files 13.0 onwards Session file is loaded on startup ${SESSION_FILE-$DYALOG/default.dse} Includes ..

  19. SALT/Spice Subset of Windows SALT and User Commands In a standard installation all files will be read only Make your own copies and point to them

  20. cores and aplcores 13.1 and earlier: Only core files only generated on receipt of an appropriate signal 11: SIGSEGV 13.2 onwards: Both core file and aplcore file generated ps listing will show extra dyalog process while aplcore is being generated syserror does not generate core file

  21. cores and aplcores APLCORENAME allows you to determine the name and location of the aplcore. APLCORENAME=andycore_*

  22. cores and aplcores 13.2 onwards aplcores will include the “Interesting Information section” At end of aplcore From “==== Interesting Information” to end of file All text in UTF-8 Can still )COPY and ⎕CY from aplcore Windows: need to copy from “aplcore.” UNIX will have less/different information to Windows, but will include ..

  23. cores and aplcores (Windows-based) Example: ========================== Interesting Information !BuildID: 0xec3cd51b !syserror: 0x000003e3 !errno: 0x00000000 .. ! !APLStack: !#.crash[2] MEMCPY 0 0 4! !APLStack: !#.hoo[2] crash! !APLStack: !#.goo[2] hoo! !APLStack: !#.foo[1] goo! !APLStack: END. ..

  24. Environment Variables Any (appropriate) variable which is mentioned in the manuals can be defined by an environment variable Always in UPPER CASE ! Example: default_div DEFAULT_DIV=1 mapl 1÷0 0 DEFAULT_DIV=0 mapl 1÷0 DOMAIN ERROR

  25. ⎕OFF ⎕OFF is a niladic function Parser (not ⎕OFF) understands expressions such as ⎕OFF 11 to mean terminate APL, with exit code 11 Standard exit codes are: 0: Successful exit from ⎕off, )off, )CONTINUE or graphical exit from GUI 1: APL failed to start (for example, lack of memory, bad translate table) 2: APL received a SIGHUP or SIGTERM 3: APL terminated with a syserror

  26. ⎕OFF Allows you to identify that your application has exited where you expected it to. ∇ lx :Trap 0 success←run_my_app ⍝ success==0 ⎕OFF (10+success) ⍝ Application exited cleanly :Else ⎕OFF 12 ⍝ Unexpected problem :EndTrap ∇

  27. ⎕OFF maplmyappws </dev/null >/dev/null 2>&1 EC=$? case $EC in 10) echo "myappterminated successfully";; 11) echo "myappterminated with failure";; *) echo "myappterminated unexpectedly" if [ $EC –ge 128 ] then let SIGNAL="$EC – 128" echo ".. got signal $SIGNAL" fi;; esac

  28. UNIX-Specific I-Beams

  29. 4001⌶ Changes effective UID ⎕AI reflects change ⎕AN shows real user name – won’t change Linux: Can only be called from process running with effective UID of 0 Be careful when debugging code ! AIX: changing to same UID is a no-op

  30. 4001⌶ Linux: sudomapl ⎕an ⎕ai andys0 197 18970 18706 4001⌶'andys' andys ⎕an ⎕ai andys 5001 207 109828 10956 4001⌶'andys' FILE ERROR 1 Operation not permitted 4001⌶'andys' ∧

  31. 4000⌶ / 4002⌶ 4000⌶ forces the APL process to fork 4002⌶ returns useful info about terminated forked processes reaps them

  32. 4000⌶ mypid←⎕sh'echo $PPID' :If 0=fpid←4000⌶'' ⍝ This is the child process :Else ⍝ This is the parent process ⍝ fpid contains PID of forked process :EndIf ⎕NA’d functions are replicated File ties are not

  33. 4002⌶ Acknowledges the termination signal from fork()ed APL processes If not run, defunct processes will appear in ps listing Returns information about all fork()ed processes that have terminated since the previous invocation of 4002⌶ PID of terminated child Exit code of child or ¯1 if got signal Signal if one received, ¯1 if exited normally Output from wait3() (15 columns of data)

  34. ⎕DMX Diagnostic Message eXtended Is a namespace - with limitations Cannot (?yet?) )cs into it Does not appear in WS Explorer Cannot be localised .. but .. Read the manual (time is short today) ! You can populate it using ⎕SIGNAL ..

  35. ⎕DMX Display form shows subset of available information 'junk'⎕ftie 1 FILE NAME ERROR: Unable to open file ("No such file or directory") 'junk'⎕FTIE 1 ∧ ⎕dmx EM FILE NAME ERROR Message Unable to open file OSError 0 2 No such file or directory HelpURL http://help.dyalog.com/dmx/13.1/Componentfilesystem/11 All information shown with ⎕DMX.({⍵,⍎¨↓⍵}⎕nl 2)

  36. ⎕SIGNAL Original version: 'Help!' ⎕SIGNAL 500 Enhanced with support for ⎕DMX: msg←'It''s all gone horribly wrong‘ ⎕SIGNAL⊂('EN' 500)('EM' 'Help')('Message'msg) More “values” available More values may be added

  37. Bringing it all together Start APL with UID=0 Start Conga Connect to port 80 4001⌶'andys' Run DRC.TODServer When request comes in, 4000⌶'' Child:write TOD to component file Child: terminate Read component file Reply to request

  38. Useful Links http://help.dyalog.com http://docs.dyalog.com Defaults to 13.1 (today) help.dyalog.com/12.1 or 13.0 docs.dyalog.com/12.1 or 13.0

More Related