Sunday, December 28, 2014

More Cypher-Like Notes about Common Lisp...

Minimalist Overview for the "tl;dr" Weary

  • Exists: Fork of de.setf.xml
  • Issues (Present revision)
    • "Not ___"
      •  (xmlp:document-parser "<foo bar='quux'/>")
        • Incomplete Parse
        • Backtrace provides limited information
        • Some functions were compiled with (optimize (speed 3) (safety 0))
  • ATN parser
  • Other source code generation
  • Manual optimize settings within function lambda forms
  • Goals
    • Allow for selection of one of: production-mode optimization or debug-mode optimization prior to compiling source code
  • Alternatives - Including
    • Option "The First One"
      • Specify non-nil :debug value in asdf:operate
      • Within a method specialized on asdf:operate, ensure that the value provided to the  :debug initarg will be accessed from the operation object provided to the method, cf. asdf/operation:operation-original-initargs
      • From the value of that initarg (if non-nil), select either production-mode optimization or debug-mode optimization, setting exactly one as the value of a variable *default-optimization*
        • User may specify values for production-mode optimization and debug-mode optimization, such that would be applied within the function lambda form for the respective method instance
        • This does not specify how the user would specify those configuration values
        • Option: Configuration via implementation init file
          • Arbitrary Things
          • Concern: If only to present the respective optimization settings to the respective method form, for binding to the specified special variable, it should not require definition of two more special variables, in addition to *default-optimization*
          • Concern: GUI Integration (Hypothetically)
            • MCcLIM Listener application
            • Climacs
            • ...
          • Existing things
            • Emacs Custom
            • GNOME gconf
            • CORBA
              • (read "/dev/arbitrary")
            • XML
              • (read "/dev/arbitrary")
            • JSON
              • (read "/dev/arbitrary")
            • Sidebar: mknod /dev/arbitrary c 1 3
            • CORBA IDL
              • Interface application
            • Shameless Promotion of Design Component: Dobelle-App
      • Within a macro form, using cl:locally, apply the value of *default-optimization* as for the optimization of code evaluated within the macroexpansion of the macro form 
        • This provides a portable alternative to using cl:with-compilation-unit to specify the optimization setting
      • To compile and load a system M for debug compilation
        1. Short technique for recompilation: Remove any existing output files as may have been generated for the system M 
        2. Typically, (asdf:operate 'asdf:load-op M :debug t)
        3. For a backtrace list as may be produced in any unexpected situations generated by the recompiled software code: The debug mode optimization  may have allowed for the compiler to collect more details from the compiled source code, such that might diminish system performance in a small regards, but would allow for further systematic reflection on event of "error"
      • Integrate with "the IDE in the blue sky"
    • or other
  • Concerns
    • The specified method definition onto ASDF, the definition of the variable *default-optimization*  and the specified macro containing the locally form, must be provided as to be accessible to both of:
      • The system definition
      • The source code denoted in the system definition
    • Yet Another Common Lisp utility system (YACLUS, or "Yak-less")
    • Policy: For any thing defined within a Common Lisp system M, to not define things within M as within the package CL-User
    • ANSI Common Lisp the Language Unlike the Java Development Platform (ACLtLUTJDP.example.com)
      • Accessing Software
        • Java: Class Loader (Transparent / Encapsulated within JVM)
        • Lisp
          • Direct access to source files via CL:LOAD
          • Component-oriented system definitions via e.g. ASDF, or MK:DEFSYSTEM
          • Extensible
      • Producing Secure, Stable, Reliable, Manageable, and Reproducible Software Systems
        • Java
          • Visibility of Classes, Fields, and Methods
          • Security Policies
            • May affect behaviors of class loader
            • May be defined within specific levels of security context
          • Thread Safety
            • ...
        • Common Lisp
          • Source control
          • Thread Safety
            • ...
      • Configuration
        • Java
          • Java properties files
          • Spring XML
          • Maven
          • Host Environment
        • Common Lisp
          • Arbitrary Extensions to ASDF 
          • Arbitrary configuration data structures and configuration syntax definitions, typically specializing type CL:LIST
          • #:YMMV
      • Testing Things Thoroughly
        • Functional Unit Testing
        • Integration Testing
        • Regression Testing
        • Test Testing
        • Test Test Testing (ETC)
      • Publishing Software
        • Java
          • JARs
          • Maven Repostories
          • ...
        • Linux
          • Debian packages
          • RPM packages
          • Gentoo portage
          • ...
        • Files (Generic)
          • Source code repository
          • Archive (GZip, etc)
          • Installer (Platform-specific)
        • "Suits" Things
          • Policies
          • Requirements
          • License Fulfillment
          • Administration
      • Debugging things
        • Issue trackers
          • Bugzzilla, YouTrack, etc
          • ...
      • An economy of things
        • ?