[Added files from parenscript 0.1.0 as distributed by Manuel Odendahl Marco Baringer **20050726100416] [Setup boringfile Marco Baringer **20050726100549] [Rename system def Marco Baringer **20050808154836] [Added declare ignore forms for unused function arguments Marco Baringer **20050808154843] [Added the pbook.py file used to generate the documentation Marco Baringer **20050813133732] [Added images used in documentation Marco Baringer **20050813134441] [Rename the system/package in the system definition, just renaming the file doesn't cut it :(. Marco Baringer **20050813135107] [Mention that I'm maintaining this version of parenscript Marco Baringer **20050813135238] [Ugly hack to support ((lambda ...) ...) Marco Baringer **20050813142023] [Javascript strings need to be quated with ' and not " to avoid interfering with the surrounding HTML. Marco Baringer **20050814134344] [Added JS* and JS-INLINE*. Marco Baringer **20050814134534] [Symbols starting with #\: are left as is, no case conversion or other mangling Marco Baringer **20050814141629] [Implement JS and JS-INLINE in terms of JS* and JS-INLINE* Marco Baringer **20050815063921] [Introduce the JS-LAMBDA class. Make JS-DEFUN a subclass of JS-LAMBDA Marco Baringer **20050815074836] [Attempt to improve the conversion of (js ((lambda ...) ...)) Marco Baringer **20050815074902] [Parenscript, documentation not withstandanding, does not depend on htmlgen Marco Baringer **20050815080053] [dotimes-dolist-fix Ivan Toshkov **20050815080906 Fixes the infinite loop problems of `dotimes' and `dolist'. ] [Added GEN-JS-NAME and WITH-UNIQUE-JS-NAMES Marco Baringer **20050815134940] [Added docstrings to previous patch Marco Baringer **20050815135128] [Export cen-js-names and with-unique-js-names Marco Baringer **20050831115820] [Added support for literal objects ( "{ ... }" syntax) Marco Baringer **20050905081702] [Use strings, and not symbols, to name javascript functions/macros Marco Baringer **20050905082735 This effectivly flattens the namespace of javascript code. While this change makes js similar to javascript, and removes the need to export symbols from the JS package, it may break previous code which depended on, for expample, js:and not being equivalent to js:and. ] [Add in checks to deal with functions/macros whose names aren't symbols Marco Baringer **20050912081700] [Fix buf in JS-INLINE causing infinite macro expansion Marco Baringer **20051005082900] [Need to escape #\' in javascript strings Marco Baringer **20051005090942] [Escape { and } chars in boring regexps Marco Baringer **20051107102118] [added COPYING file Luca Capello **20051107123047] [Proper concatenation of inline CSS Alan-Shields@omrf.ouhsc.edu**20051115234812 CSS-INLINE does a simple concatenation of the results of CSS directives. This looks like: color:blacksize:200% Unfortunately, it should look like this: color:black;size:200% It now does. ] [need a function for css-inlining Alan-Shields@omrf.ouhsc.edu**20051115235233 If you have code that needs to inline CSS across an array, it's difficult to use the current macro. Having a function helps - mapping the macro to the function only completes things. ] [enable #+parenscript Alan-Shields@omrf.ouhsc.edu**20051115235351 To integrate Parenscript with Araneida without requiring Parenscript, I had to do some compile conditionals. This would make it much easier. Marco, eventually I am going to add this to every last one of your projects. ;-p ] [Added defgenerics for all the defmethods Alan-Shields@omrf.ouhsc.edu**20051201191709 Ze style warnings! Zey drive me craaaazy. ] [quotes in introduction henrik.hjelte@poboxes.com**20051216153949] [tests from the reference henrik.hjelte@poboxes.com**20051216180844] [cleaned reference henrik.hjelte@poboxes.com**20051217095257] [css-inline generator henrik.hjelte@poboxes.com**20051218111426] [bug in dwim-join henrik.hjelte@poboxes.com**20051218171724] [bugfix slot-value henrik.hjelte@poboxes.com**20051219131901] [New function gen-js-name-string Marco Baringer **20051219160435 This allows you to get a unique javascript name as a string and not just as a symbol. ] [css-inline compiles with cmucl henrik.hjelte@poboxes.com**20060109113602] [pbook.py: convert endlines to Unix format Luca Capello **20060122211704] [remove trailing spaces at empty lines in *.lisp Luca Capello **20060122215742] [remove trailing spaces at endlines in *.lisp Luca Capello **20060123211927] [move source files to src/ and modify parenscript.asd as well Luca Capello **20060123213152] [move test files to t/ and modify parenscript-test.asd as well Luca Capello **20060123215026] [move doc files to docs/ Luca Capello **20060123222548] [merge parenscript-test.asd into parenscript.asd Luca Capello **20060127085709] [changed CASE to SWITCH and made CASE more like Lisp. henrik.hjelte@poboxes.com**20051227190529] [ref2test finds reference.lisp in docs dir henrik.hjelte@poboxes.com**20060201111712] [proper escape sequences in strings henrik.hjelte@poboxes.com**20060202123912] [The #\Form is not a standard character name, use #.(code-char 12) instead. Marco Baringer **20060205160444] [remove docs/reference.pdf, already included in manual.pdf Luca Capello **20060127132511] [remove docs/images and relative references in tutorial.lisp Luca Capello **20060216084259] [#\$ is not a special javascript character. (Reported by: Richard Morse ) Marco Baringer **20060225170751] [Implement js-to-strings for the regex class Marco Baringer **20060226170527] [Add variable *js-quote-char* (Patch by: Xan Lopez ) Marco Baringer **20060401112858] [Added docstring for *js-quote-char* Marco Baringer **20060401113503] [Export defjsmacro Marco Baringer **20060401113918] [Added a rebind js macro that rebinds variables on the js side attila.lendvai@gmail.com**20060416181825] [Added character type conversion attila.lendvai@gmail.com**20060508110611] [Added compile-parenscript-file attila.lendvai@gmail.com**20060508110834] [Use an explicit asdf:perform :after method instead of :perform (load-op :after ...) Marco Baringer **20060510125422] [Move compile-parenscript code into a sperate file so that it complies cleanly Marco Baringer **20060510125447 The problew is that compile-parenscript-file-to-string contains a call to the macro js:js* this macro needs to be defined before we compile the compile-parenscript-file-to-string function. ] [Added import-macros-from-lisp that bring lisp macros into the js macroexpansion attila.lendvai@gmail.com**20060512152954] [Move undefine-js-compiler-macro into an eval-when. Reported by William Halliburton. attila.lendvai@gmail.com**20060513093031] [Make defjsmacro rend's docstring a comment so clisp will stop complaining Marco Baringer **20060527093159] [Don't use loop's initially clause to avoid a clisp bug attila.lendvai@gmail.com**20060704003315 For details see http://sourceforge.net/tracker/index.php?func=detail&aid=1516684&group_id=1355&atid=101355 ] [Shortened default gensym constant attila.lendvai@gmail.com**20060705182046] [Added map and map-into attila.lendvai@gmail.com**20060705182351] [Moved some macros towards the top of the file due to dependencies attila.lendvai@gmail.com**20060706225147 In the long run we should cut js.lisp into several files. One dealing with the basic infrastructure like macro expansion, and the rest implementing the compiler based on this infrastructure/utilities. ] [Fix the return value of map-into attila.lendvai@gmail.com**20060706225547] [Added :eval-forms-p to compile-parenscript-file attila.lendvai@gmail.com**20060707151231] [Added src/lib/functional.lisp attila.lendvai@gmail.com**20060707151321 This is a first element of an parenscript library. The contents of this file is to be compiled with parenscript and the result js included in the host environment in one way or another. ] [Fixed instanceof attila.lendvai@gmail.com**20060707151826] [Fix screwed-up asd file attila.lendvai@gmail.com**20060707223711] [Made ref2test work with cl-launch Henrik Hjelte **20060711084915] [documentation updated about dollar char Henrik Hjelte **20060711100952] [regex patch suggested by Lou Vanek Henrik Hjelte **20060711134705] [Rebind var in dolist to make also clisp happy (import-macros-from-lisp was broken due to this) attila.lendvai@gmail.com**20060711211750] [bugfix sometimes missing semicolons when joining js-body Henrik Hjelte **20060715201344] [Fixed js-with WARNING: this involves syntax change attila.lendvai@gmail.com**20060716163946 Previously the syntax of with was this: (with (object) body) now it's: (with object body) It was also broken when 'object' was an expression... ] [Fix compilation of ((foo) bar) -> foo()(bar) attila.lendvai@gmail.com**20060716164630] [Fix compilation of (.call (lambda () ...) arg1 ...), add missing ()'s around the lambda attila.lendvai@gmail.com**20060716164717] [Drop unused js2.lisp Marco Baringer **20060716170749] [Allow strings and numbers as slot names in object literals marijnh@gmail.com**20060721075006] [Use symbol-name for op matching to fix various bugs/surprises (e.g. `(foo::% 4 2)) attila.lendvai@gmail.com**20060821095700] [docs/pbook.py: correct faulty check for PDF output Luca Capello **20061002215516 Frank Küster discovered that docs/pbook.py produces buggy LaTeX code, a faulty check for PDF output. It doesn't show up if you only try to create PDF. But if you want to go the traditional route and produce dvi files (and from that PostScript and maybe finally again PDF), this will fail and still produce PDF. The script itself doesn't do that (or rather, it does that in fact but ignores the output in this first run), but it's still an uglyness. Moreover, it's completely useless, because the only package that uses the information, graphicx, will detect the output format itself (and in a proper way). http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=390629 ] [Killed the feature (js:js* '(let (a b) (+ a b))) => "var a = b; a + b;" attila.lendvai@gmail.com**20060901160249] [Added assert for simple catch forms attila.lendvai@gmail.com**20061003134923] [Added evenp and oddp attila.lendvai@gmail.com**20061003134955] [make the test escape-sequences-in-string work again Henrik Hjelte **20061115155846] [Updated documentation to reflect the new syntax of the with statement Henrik Hjelte **20061115161303] [build.sh for documentation Henrik Hjelte **20061115164339] [updated pdf manual for new with syntax Henrik Hjelte **20061115164603] [asdf test-op added, (asdf:operate 'asdf:test-op :parenscript) Henrik Hjelte **20061115192720] [tests for some bugs, reported by Marijn Haverbeke Henrik Hjelte **20061115204456] [bugfix commutative plus and minus Henrik Hjelte **20061115213502] [moretests for method-call (dot-notation) syntax Henrik Hjelte **20061115224045] [bugfix method-call problem Henrik Hjelte **20061115234144] [docs updated for new setf optimization Henrik Hjelte **20061115235441] [Possible to make attributes conditionally rendered with js-html generator Henrik Hjelte **20061122193027] [add proper cond construct marijnh@gmail.com**20061115073822] [conditional attributes in html-generator Henrik Hjelte **20070115141948] [Fixed (?) quoting mechanism attila.lendvai@gmail.com**20070416131133 (js:js (+ 42 '"FoooFFFOFOFooo")) => "42 + FoooFFFOFOFooo;" IOW, quote inside a parenscript form means to simply print the quoted value as-is. Among other things, this is useful for inserting literal javascript into parenscript. I hope it will not break anything. ] [Follow quote changes in SLOT-VALUE attila.lendvai@gmail.com**20070416143603] [Note in the warning that we are redefining a _js_ compiler macro attila.lendvai@gmail.com**20070425145806] [Fix (- 1) and (incf/decf x 5), patch by Ray Myers attila.lendvai@gmail.com**20070427073917 I have a minor patch that fixes the following incorrect (or at least unexpected) behavior in ParenScript. (js (- 1)) => "1;" (js (incf x 5)) => an error (js (decf x 5)) => an error ] [Bah, speed up list-to-string by a few factors... attila.lendvai@gmail.com**20070503144028] [Fix: add parens around instanceof to make it work in all situations attila.lendvai@gmail.com**20070606194525] [setf slot-value patch Vladimir Sedach **20070615192916] [Added binary negation ~ operator. Vladimir Sedach **20070616045912] [Added the defmacro/js macro-defining macro. (vs) Vladimir Sedach **20070619184451] [Added js-utils file. (vs) Vladimir Sedach **20070619193748] [Exported defmacro/js Vladimir Sedach **20070619213416] [Added defmacro+js (vs) Vladimir Sedach **20070620204800] [Renamed with-timeout to do-set-timeout, added ignore errors (thanks to John Fremlin). (vs) Vladimir Sedach **20070621175416] [Added defmacro to ParenScript. (vs) Vladimir Sedach **20070622204640] [Added extras directory with js-expander.el. Vladimir Sedach **20070625191619] [Added js-expander.el Vladimir Sedach **20070625191727] [Added contributors file. Vladimir Sedach **20070625194200] [Refactored macro-related code, changed "compiler macros" to special forms, added separate namespaces for macros and symbol-macros, added full macro lambda lists to macrolet, added support for docstrings to defjsmacro. Vladimir Sedach **20070626192452] [package rename reddaly@gmail.com**20070626174320] [js.lisp reorganization reddaly@gmail.com**20070626194915] [Updated js-html.lisp and parser.lisp to reflect the changes in the previous patch. (Had to resolve a conflict because js.lisp was deleted.) reddaly@gmail.com**20070626210523] [js.lisp breakup reddaly@gmail.com**20070626213027 Broke the js.lisp file up into several three files: source-model.lisp, js-translation.lisp, and parser.lisp. source-model.lisp: class definitions that correspond to the Javascript AST. (defjsclass forms for the most part) js-translation.lisp: functions for converting AST objects to Javascript source code parser.lisp: macro definitions and the mechanisms for processing Parenscript forms into AST objects. See also http://common-lisp.net/pipermail/parenscript-devel/2007-June/000035.html ] [Added Red Daly to contributors file. (vs) Vladimir Sedach **20070626231307] [Added divisors to ceiling, floor, round. (vs) Vladimir Sedach **20070628192823] [add an (eval-when ...) when defining a test suite Luca Capello **20070701170021] [t/test.lisp: typo, remove colon at line 82 Luca Capello **20070701170419] [character encoding fixes in test.lisp reddaly@gmail.com**20070702214307] [Manually applied Luca Capello's patch to factor out misc tests into their own test file. (vs) Vladimir Sedach **20070703182937] [Actually remembered to add the new tests file for the previous patch. (vs) Vladimir Sedach **20070703183135] [Improved symbol-to-js to handle more complicated Javascript-like symbols. (vs) Vladimir Sedach **20070703194556] [Added oddp, evenp utility functions, added explanatory error message to js-compile-to-symbol. (vs) Vladimir Sedach **20070710211821] [Added warnings when attempting to use reserved Javascript keywords as variable or functions names (thanks to Viktor Leis for the code). (vs) Vladimir Sedach **20070712231907] [Added documentation of new macro facilities. (vs) Vladimir Sedach **20070713211109] [Improved formatting/whitespace removing code in tests so that now all ps-tests pass. Added slot-value-setf test. (vs) Vladimir Sedach **20070714002854] [Fixed compile error from last patch. (vs) Vladimir Sedach **20070716173747] [Re-introduced 'with' special form (it got lost somewhere along the way). (vs) Vladimir Sedach **20070716181340] [TAG release-7-20-07 Vladimir Sedach **20070720151812] [symbol-refactoring-part-1 reddaly@gmail.com**20070713210947] [js-prefix-to-script-prefix reddaly@gmail.com**20070713234051] [rearrange-library-esque-files reddaly@gmail.com**20070714000536] [renaming-and-refactoring reddaly@gmail.com**20070720003431 Changed the names of many functions and macros to get rid of the symbols with "js" in them--its not Javascript, it's Parenscript! Most of those symbols were renamed with "script" replacing "js". Also changed the main compilation interfaces to use the function COMPILE-SCRIPT and the macro SCRIPT from JS-COMPILE and JS respectively. Additionally, the first steps of the package system are included (with the addition of a the SCRIPT-PACKAGE and COMPILATION-ENVIRONMENT classes). These are integrated into the current compiler, though they probably break a few "traditional" serialization methods, specifically because macro and special form names are stored as symbols rather than strings and EQL comparisons are used rather than STRING-EQUAL comparisons of the strings. I have also split parser.lisp into parser.lisp and macrology.lisp. Parser.lisp contains mechanisms for parsing Parenscript given an input s-expression while macrology.lisp contains language definitions that make use of the parsing mechanisms. All tests now pass, though the documentation has gone slightly out of date with the symbol renaming. This will be fixed shortly. More tests and functionality need to be added to make the current Parenscript compatable with the older semantics (as dicussed, comparing macro/special form names based on their string values is the main thing). ] [eval-when special form reddaly@gmail.com**20070720203532 Added the EVAL-WHEN special form to the Parenscript language. It works similarly to the EVAL-WHEN form in Lisp. It has the following form: (eval-when body-forms-language? (situation*) body-forms*) SITUATION is either :compile-toplevel or :execute. BODY-FORMS-LANGUAGE is optional and either :parenscript or :lisp. It defaults to :lisp when :COMPILE-TOPLEVEL is specified and :parenscript when :EXECUTE is specified. Parenscript's EVAL-WHEN is relevant when loading toplevel forms, either from Parenscript files or from within Lisp. ] [bulk of package system, reader, and other refactoring reddaly@gmail.com**20070724040856] [usable-package-system reddaly@gmail.com**20070725040630 The package system is now fairly usable. package.lisp and builtin-packages.lisp now intelligently share symbols. It is also possible to completely ignore any package system functionality. ] [Removed redundant math library functions (more comprehensive ones are in lib/js-utils.lisp) Vladimir Sedach **20070726193714] [Cleaned up deprecated interface, added Lisp/ParenScript macro-defining macros back to parser.lisp. Vladimir Sedach **20070726204022] [Fixed slot-value-conditional bug. (slot-value object slot) should now handle cases where object is an arbitrary expression correctly. Vladimir Sedach **20070726212153] [ASDF interaction for Parenscript files reddaly@gmail.com**20070727023326 see the new paren-asdf.lisp and updated compilation-interface.lisp files for implementation details. The function COMPILE-SCRIPT-SYSTEM compiles all the system's files and outputs them to a single stream. Currently it compiles each file separately; in the future we will probably need to compile the whole program and then translate it. ] [paren-asdf hack to make parenscript-compile-op use load-op's dependencies reddaly@gmail.com**20070727034324] [defscriptmacro single string body fix reddaly@gmail.com**20070728173303 From the mailing list: A js macro that evaluates to a string literal can't be used: (defjsmacro blah () "abc") (js (blah)) => "null;" This seems wrong. For one thing, other literals work fine: (defjsmacro blah () 123) (js (blah)) => "123" For another, Lisp behaves differently: (defmacro blah () "abc") (blah) => "abc" Dan p.s. Actually, I'd rather use a symbol macro but it appears there is no define-symbol-macro in Parenscript and in this case symbol-macrolet is not convenient. ] [define-script-symbol-macro added reddaly@gmail.com**20070728174920] [Changed tutorial to reflect factoring out of the HTML generation code of Portable Allegroserve, addition of PS package system. (vs) Vladimir Sedach **20070730210219] [Changed names of defmacro+/js forms to ps, made the special-form compilation error message be more informative. (vs) Vladimir Sedach **20070730210351] [Fixed bug where script* wasn't evaluating its arguments as promised. Vladimir Sedach **20070730213259] [Added tests for previous script* eval bug. Vladimir Sedach **20070730213615] [Revised PS interface and deprecated function list based on user input. Vladimir Sedach **20070730215254] [prefix ( in a comment attila.lendvai@gmail.com**20070731111223] [fix rebind attila.lendvai@gmail.com**20070731111637] [make deprecation warning a only a style-warning attila.lendvai@gmail.com**20070731171052] [Corrected export of defmacro+/ps names. Vladimir Sedach **20070731182056] [Added null macro (thanks to Daniel Gackle for suggestion). Vladimir Sedach **20070731182406] [Setup *compilation-environment* to have a working default value. Vladimir Sedach **20070731182839] [Started work on implementing deprecated compatibility interface by Attila Lendvai's idea. Vladimir Sedach **20070731184714] [Changed "Lisp package already has corresponding script package" error to warning (besides being annoying for users, tackge tests from being idempotent) Vladimir Sedach **20070731212410] [Fixed handling of quoted nil ('nil should be the same as nil, however ''nil isn't). Vladimir Sedach **20070731212609] [Changed slot-value so that (slot-value foo nil) is now "foo" instead of "foo.null" Vladimir Sedach **20070731212652] [Added tests for 'nil and slot-value nil patches. Vladimir Sedach **20070731212742] [Setup *compilation-environment* to have a working default value. Vladimir Sedach *-20070731182839] [Changed "Lisp package already has corresponding script package" error to warning (besides being annoying for users, tackge tests from being idempotent) Vladimir Sedach *-20070731212410] [Unexported ps-to-string. Vladimir Sedach **20070731224358] [Added functions to set up and tear down a persistent compilation environment. Vladimir Sedach **20070731225910] [advanced lambda lists, script packages with no primary lisp package improvements reddaly@gmail.com**20070801012356] [fixed minor issues with advanced lambda lists, resolved conflicts, additional quoted-nil hack (red) reddaly@gmail.com**20070801055212] [Added functions to set up and tear down a persistent compilation environment. Vladimir Sedach *-20070731225910] [Fixed ps* not being found when special-form-symbol assertion is triggered. Vladimir Sedach **20070801182954] [Removed manual.pdf from source control. Vladimir Sedach **20070801183143] [MSlightly more informative error messages for symbol-abuse. Vladimir Sedach **20070801224245] [Disabled Boyer-Moore matching for cl-ppcre in js normalization code (breaks on Unicode lisps, on by default in PPCRE). Vladimir Sedach **20070802221705] [Added defsetf long-form. Vladimir Sedach **20070802221926] [Changed package system so that symbols in parenscript, javascript and parenscript-user are non-prefixed. Made symbols in unknown packages be treated as though they were in parenscript-user by default. Added a prefix string preference to PS packages. Removed all *enable-package-system* stuff. Vladimir Sedach **20070803011857] [Fixed handling of uninterned symbols. Vladimir Sedach **20070803020133] [keyword/optional fixes, slot-value accepts many slot names (RED) reddaly@gmail.com**20070803181104 I also fixed some problems with nil serialization and decomposed the compile-parenscript-form function into a generic function with different behavior depending on the type of form. ] [Added a more informative print-object method for script-package. Vladimir Sedach **20070803164606] [Removed reference to without-packages in deprecated-interface.lisp. Vladimir Sedach **20070803182805] [Cleaned up macro-defining code, fixed handling of special forms in script-expand-form. Vladimir Sedach **20070803183217] [Added a more meaningful error message to compile-to-expression. Vladimir Sedach **20070803183535] [Restored special-form getting and setting by symbol-na,me Vladimir Sedach **20070803193123] [Renamed options to optional-args, added unit test for defun foo (&optional... Vladimir Sedach **20070803201258] [Fixed (return). Vladimir Sedach **20070803201936] [Added short-form defsetf. Vladimir Sedach **20070803210332] [Fixed order of evaluation in defsetf long form. Vladimir Sedach **20070803211900] [Stopped abuse of set-difference implementation-dependent ordering in defsetf. Vladimir Sedach **20070803215917] [Added (defun (setf... Vladimir Sedach **20070803225922] [Moved package-related code to namespace.lisp, added back *enable-package-system*. Vladimir Sedach **20070804005948] [Removed parenscript.reader Vladimir Sedach **20070804061050] [Removed parenscript.asdf Vladimir Sedach **20070804061651] [removed file compilation exports for now (red) reddaly@gmail.com**20070806211019] [fixed DEFSCRIPTMACRO evaluation problem that caused load/compilation problems (red) reddaly@gmail.com**20070806211054 DEFSCRIPTMACRO and other similar macros were not expanding into but were instead side-effecting macro definitions. ] [remove lingering format string reddaly@gmail.com**20070806213119] [Updated js-expander to use ps:ps instead of js:js. Vladimir Sedach **20070812011809] [Big refactoring of the ParenScript compiler. Vladimir Sedach **20070812011948] [Updated reference.lisp to reflect recent changes. Vladimir Sedach **20070812012242] [Modified ParenScript tests to reflect the big compiler refactoring. Vladimir Sedach **20070812012349] [Exported the new naming and namespace interface functions and variables in package.lisp. Vladimir Sedach **20070812154240] [Redid package system unit tests. Vladimir Sedach **20070812154311] [Fixed type bug with printing slot-value with obj/slot being a non-list. Vladimir Sedach **20070812165622] [Reworked printing implementation to get rid of dwim-join and gratuitious consing; now everything gets written to a stream. Vladimir Sedach **20070815010708] [Updated the reference and tests to reflect some small changes in the new printing code (like current lack of line breaks and spaces before some opening parens). Added a few new unit tests. Vladimir Sedach **20070815010833] [Removed js-ugly-translation. Vladimir Sedach **20070815203929] [Added correct indentation to the printer. Vladimir Sedach **20070815215846] [Added in-line code to support &rest arguments. Vladimir Sedach **20070815230241] [Replaced optional-args as the keyword-object-handling parameter with a gensym. Vladimir Sedach **20070815235113] [Changed html -> ps-html (otherwise there's a conflict with any number of existing html generation libraries), reorganized packages.lisp exports. Vladimir Sedach **20070820204042] [Removed js and ps-inline as special forms (they didn't make any sense as special forms), added ps-inline and ps-inline* to compilation-interface.lisp. Vladimir Sedach **20070820210748] [Removed mention of old package system from tutorial.lisp. Vladimir Sedach **20070820210816] [Updated the documentation and test suite to reflect the fact that html is now ps-html and the ps-inline special form no longer exists. Vladimir Sedach **20070820210858] [Updated and fixed the deprecated interface. Vladimir Sedach **20070820211013] [Fixed the problem with compile-parenscript-form not being called with the right "expecting" value if a macroexpansion took place. Vladimir Sedach **20070822224633] [Fixed cond. Vladimir Sedach **20070823205853] [Made if-expressions return null instead of undefined when else clause wasn't specified. Vladimir Sedach **20070823212216] [Made progn expressions with a single statement print as that statement alone (without parens). Vladimir Sedach **20070823212237] [Added the ability to compile cond to expressions. Vladimir Sedach **20070823213515] [Fixed error where function call arguments weren't getting compiled to expressions. Vladimir Sedach **20070823230802] [Removed js-file and js-script from deprecated interface (helper macros for net.html.generator from AllegroServe, which really don't belong in ParenScript). Vladimir Sedach **20070823230939] [Updated the ParenScript tutorial. Vladimir Sedach **20070823231054] [Updated the ParenScript reference. Vladimir Sedach **20070824181529] [Updated the introduction doc. Vladimir Sedach **20070824182047] [Added code to remove unreachable constant forms from progn. Vladimir Sedach **20070824193930] [Added ps-print method specialized on null to ignore printing of nils. Vladimir Sedach **20070824200041] [Added defsetf and (defun (setf examples to the reference. Vladimir Sedach **20070824200123] [Fixed problem with (- 1). Unary operator "-" didn't like number constants. Vladimir Sedach **20070824201651] [Added description of namespace system to the reference. Vladimir Sedach **20070824204313] [Revised obfuscation facility, added its description to the reference and more unit tests. Vladimir Sedach **20070824213201] [Updated description of PS-HTML in the tutorial. Vladimir Sedach **20070828230438] [TAG 28-08-2007 Vladimir Sedach **20070829035418] [Eliminated unwinding of macro environment for macro expansions, which fixed bug "Bug: inconsistent expansion of local macro" submitted by Daniel Gackle on 9/12/07 Vladimir Sedach **20070920233314] [Added macro environment unit test that tests for bug "inconsistent expansion of local macro". Vladimir Sedach **20070920234934] [Added support for &whole arguments in ps macro lambda lists, renamed parser.lisp to compiler.lisp Vladimir Sedach **20070923060726] [Made the handling of keyword symbols across Parenscript be consistent with the treatment of other symbols (previously a keyword symbol was being treated as a quoted symbol by Parenscript). Vladimir Sedach **20071010231210] [Made defun, defvar and doeach expect a symbol as the "name" argument instead of trying to compile-parenscript-form :expecting :expression. Vladimir Sedach **20071010231257] [Fixed a bug in how symbol-macros were defined, expanded, and used by 'with-slots'. Vladimir Sedach **20071011022740] [Made ps-macrology depend on utils in parenscript asdf definition (thanks to Kevin Layer). Vladimir Sedach **20071014181519] [Declared unused "expecting" variables in ps-special-form definitions ignorable (thanks to Kevin Layer). Vladimir Sedach **20071014181620] [In package definition, instead of exporting "NIL", exported (symbol-name 'nil); the latter causes a problem in case-sensitive Allegro. (thanks to Kevin Layer for the patch). Vladimir Sedach **20071014181722] [In parse-lambda-list, made the need-symbol function work (otherwise the conditional always evaluated to nil). Vladimir Sedach **20071014181811] [Further ignore declarations for unused variables (thanks to Kevin Layer). Vladimir Sedach **20071016215453] [Changed ps-inline to take a form instead of an implicit progn as a parameter, gave ps-inline and ps-inline* optional arguments which bind *js-quote-char* to make it more convenient to use the two functions with different html generation macros (which may use single or double quotes to delimit attribute values). Vladimir Sedach **20071016220445] [Refactored Parenscript printer code. Vladimir Sedach **20071026060625] [More refactorings to the printer, exported symbols that control printer behavior. Vladimir Sedach **20071029194521] [Got rid of unused functions in util.lisp, slight refactoring. Vladimir Sedach **20071031070132] [Prettied up whitespace and comments in parse-lambda-list, ref2test. Vladimir Sedach **20071031070359] [TAG Halloween release (20071031) Vladimir Sedach **20071031072811] [Fixed define-symbol-macro. Vladimir Sedach **20071101014603] [Added define-symbol-macro unit test. Vladimir Sedach **20071101015315] [Added length, @, mapcar utility functions, exported all library function symbols. Vladimir Sedach **20071104180553] [Fixed definition of *ps-lisp-library*. Vladimir Sedach **20071104181842] [TAG 20071104 Vladimir Sedach **20071104184206] [Removed outdated internal documentation. Vladimir Sedach **20071104184545] [Fixed problems with expressions being compiled to statements inside expression progns, introduced mechanism for declaring variables in expression scopes, refactored function compilation. Vladimir Sedach **20071111181033] [Moved code from js/ps-macrology.lisp to special-forms.lisp, straightened out parenscript.asd to use serial file dependencies, unexported defaultf and rewrote rebind as lexical-let and exported that. Vladimir Sedach **20071115021742] [Got rid of js-keyword form. Vladimir Sedach **20071224234617] [Made with-ps-gensyms prefix the given gensym with the symbol-to-js name of the given gensym variable binding if an explicit prefix was not provided (the rationale for this is to save a little typing). Vladimir Sedach **20071224235815] [Made special forms be compiled into named functions in a new package, parenscript-special-forms, and introduced literal special forms, to improve error messages and debugging. Vladimir Sedach **20071225000217] [Introduced special global variables to Parenscript, renamed let and lexical-let to let* and lexical-let*, and made let itself expand to let* until parallel assignment let is implemented. Vladimir Sedach **20071225000813] [Fixed literals error introduced by patch "Mon Dec 24 17:02:17 MST 2007 Vladimir Sedach Vladimir Sedach **20071225043214] [Moved functional runtime PS utilities from src/libs/functional.lisp into *ps-lisp-library* in src/lib/js-lib.lisp Vladimir Sedach **20071226012306] [Renamed src/lib Parenscript library files, got rid of Parenscript CSS system. Vladimir Sedach **20071226030810] [Added 'concatenate' to Parenscript macro utilities. Vladimir Sedach **20071226033140] [Made the ps-html facility work both in Parenscript and in Common Lisp. Vladimir Sedach **20071226033344] [Fixed bug where (setf x (- x 1 2)) yielded x -= 1 - 2. Vladimir Sedach **20080201062558] [Added #\= to *special-chars* so now you can write boolean= function names, as requested by Daniel Gackle. Vladimir Sedach **20080201153049] [Corrected spelling error. Travis Cross **20080226225953] [Whitespace standardization in src/package.lisp. Travis Cross **20080226230902] [Added support for breaking and continuing to arbitrary labels. Travis Cross **20080330014618] [Greatly simplified implementation of lexical-let*. Travis Cross **20080330020525] [Added lexical-let. Travis Cross **20080330020829] [Added simple-let* and aliased let* to it. Travis Cross **20080330021400] [Added simple-let, which does parallel binding without a lambda. Travis Cross **20080330022218] [Aliased let to simple-let. Travis Cross **20080330022316] [Added psetf. Travis Cross **20080330022553] [Added setq and psetq. Travis Cross **20080330022755] [Updated let1-dynamic to clean up its temporary stack variable after use. Travis Cross **20080330023334] [Improved, extended, and refactored iteration special forms. Travis Cross **20080330193512 * Added support for DO*. * DO now does parallel assignment. * DO/DO* now correctly support init-forms such as: (do (a (b) (c 1) (d 1 (1+ d))) ...) * DO/DO*/DOTIMES/DOLIST/DOEACH now support return values via a lambda transform. * DOEACH now supports implicit key/value destructuring, e.g.: (doeach ((key val) arr res) ...) * Added labeled-for to facilitate creating labeled for loops. * Restructured low level printer operators to better match the underlying JS. ] [Whitespaceification: removed indentation tabs throughout project. Travis Cross **20080330195712 ...and replaced each tab with 8 spaces. Tab indentation had previously been used inconsistently and was dominated by space-based indentation. In the future, disable indent-tabs-mode in emacs! (setq indent-tabs-mode nil) ] [Some minor comment and whitespace cleanup. Travis Cross **20080330201134] [Updated the documentation and test cases. Travis Cross **20080330222856] [Cleaned up and rearranged the package exports a bit. Travis Cross **20080330223550] [Removed deprecated exports that are no longer implemented. Travis Cross **20080330223831] [Added a mechanism for expanding parenscript forms in a clean environment. Travis Cross **20080330225116] [Added myself to the list of contributors. Travis Cross **20080330225308] [Cleaned up and standardized indentation of JS code in the reference documentation. Travis Cross **20080330233949] [Updated ps-special-form-p to correctly identify a special form even if the symbol identifying the special form is in the wrong package. Travis Cross **20080331021323] [Silence an unused variable warning. Travis Cross **20080331212733] [Updated ps-literal-p to correctly identify literal symbols without regard to the symbol's package. Travis Cross **20080331215158] [Added {} to *ps-literals*. Travis Cross **20080331220200 Using {} as a literal to create an empty object literal was only working by accident previously. When not in the function position, {} was being compiled as a JS variable rather than an object-literal, which just happened to work sometimes. In concert with correctly checking symbols that aren't in the parenscript package, this should provide for more reliable behavior. ] [Updated the blank-object-literal test for the now correct behavior. Travis Cross **20080331220231] [Added a couple of test cases for object literals. Travis Cross **20080331220855] [Updated atan to support two arguments as in CL. Travis Cross **20080331224345 ATAN with two arguments translates into atan2 in JS. ] [Added support for LOG function. Travis Cross **20080331224613 Thanks to Daniel Gackle. ] [Added support for SQRT function. Travis Cross **20080331224810] [Rearranged math psmacros to match the order that the corresponding functions appear in the HyperSpec. Travis Cross **20080331230358] [Added PS-ONCE-ONLY macro building helper. Travis Cross **20080401075904] [Implemented equivalents for the CL hyperbolic trigometric functions. Travis Cross **20080401081307] [Relocated the definitions for the 1+ and 1- psmacros with the other math functions. Travis Cross **20080401081801] [Added handling for PI. Travis Cross **20080401083007] [Rearranged math-related exports. Travis Cross **20080401083557] [Exported hyperbolic trig symbols. Travis Cross **20080401083641] [Exported PI. Travis Cross **20080401083739] [Intern all special form symbols in the :parenscript-special-forms package. Travis Cross **20080401153022] [Quoted parens in a docstring to make Emacs happy. Travis Cross **20080405054300] [Changed script-* to ps-* across the board for consistency. Travis Cross **20080405063629] [Whitespace fix. Travis Cross **20080405063839] [Introduced ps-symbols and removed use of :parenscript-special-forms package. Travis Cross **20080405070737 The idea here is to stop abusing the CL package system while still allowing the user control of the PS environment. ] [Fixed one remaining define-script-symbol-macro. Travis Cross **20080405071913] [Added some symbol mangling fixes. Travis Cross **20080405081511] [Moved the definition of ps-convert-op-name since we compile compile.lisp before printer.lisp. Travis Cross **20080405081659] [Corrected parameter docstring. Travis Cross **20080405083927] [Reorganized the package exports. Travis Cross **20080405084842] [Updated the define-script-symbol-macro export to define-ps-symbol-macro. Travis Cross **20080405085155] [Deprecated define-script-symbol-macro since it was part of the public interface. Travis Cross **20080405085922] [Updated so as to ps-intern fewer extraneous symbols. Travis Cross **20080405091656] [Output JS operators in lowercase. Travis Cross **20080512082526] [Added a test for correct output of the JS:in operator. Travis Cross **20080512082603] [Corrected the definition of ps:length. Travis Cross **20080817095655 Thanks to Daniel Gackle for pointing out the problem and the most obvious solution. ]