Home / Section index
 www.icosaedro.it 

 PHPLint - Latest changes

This is only a partial list that reports changes in the 5 last published versions of the program. The complete list is available in the file CHANGES of the distributed package.

Version 1.1-20120402:
====================
+ FIX: failed to detect positive signed literal constants `const X=+123;' in
  static expressions generating an infinite loop.
+ FIX: in concrete classes, failed to check if all the methods inherited from
  all the interfaces at any deep level were actually implemented.
+ FIX: flow analysis: failed to recognize actual execution path in nested
  do/while loops.
+ FIX: on autoloading, did not properly restored the context of the
  thrown exceptions, possibly forgetting already detected exceptions.
+ Short tag <?= deprecation reverted in PHP>=5.4.0 so it does not generate
  Warning under PHPLint anymore.
+ Updated PHP modules: iconv, pcre, standard.
+ Added modules: fileinfo, intl, phar.
+ Removed modules: mime_magic (replaced by fileinfo).
+ Update PHPLint Standard Libraries:
  it\icosaedro\utils\UString (trimming, case-insensitive comparisons, case
  conversion);
+ Added libraries:
  utf8 (convenience function for UTF-8 encoded source files);
  it\icosaedro\io\InputStream (interface to a generic source of bytes);
  it\icosaedro\io\OutputStream (interface to a generic drain of bytes);
  it\icosaedro\io\BufferInputStream (string of bytes as source of bytes);
  it\icosaedro\io\BufferOutputStream (string of bytes as drain of bytes);
  it\icosaedro\io\FileInputStream (file as source of bytes);
  it\icosaedro\io\FileOutputStream (file as drain of bytes);
  it\icosaedro\io\FileName (Unicode file name manipulation);
  it\icosaedro\regex\Pattern (parses strings with regular expressions);
  it\icosaedro\regex\UPattern (parses Unicode strings with regular expressions);
  it\icosaedro\utils\BitSet (set of non-negative numbers);
  it\icosaedro\utils\Histogram (generates an histogram);
  it\icosaedro\utils\UTF8 (handling of UTF-8 encoded strings);
  net\sourceforge\phpmailer\PHPMailer (sends e-mail; GNU LGPL license);
  net\sourceforge\phpmailer\SMTP (supports SMTP protocol; GNU LGPL license);

Version 1.1-20120202:
====================
+ FIX: class autoloading triggered inside function failed to restore the stack
  of the local variables and the list of the thrown exceptions and DocBlock
  parsing.
+ FIX: when errors-to-exceptions mapping enabled, complained missing thrown
  exception declaration in module's functions triggering errors.
+ FIX: bare "array" and "array[]" are now assumed "array[]mixed" as it should
  be, and not "array[]UNKNOWN". This fixes several errors that where signaled
  in assignment and return from function.
+ FIX: arrays of the same type can be added together. Note for non-PHP
  programmers: array("a","b") + array("c") gives array("a","b") and NOT
  array("a","b","c") is you may think so carefully read the PHP manual for
  more details.
+ FIX: statements can now start with the silencer operator "@", so
        @unlink($tmp_file);
  is valid. Restrictions: the silencer operator is not allowed for require*,
  include* and define* statements; the silencer operator cannot be used if
  errors-to-exceptions mapping is enabled, in which case you may use
        try { unlink($tmp_file); } catch(ErrorException $e){...}
+ Supports new syntax "T[]", so that "string[int]" is equivalent to
  "array[int]string" and "float[string][int]" is equivalent to
  "array[string][int]float". This new syntax is supported in any context,
  including PHPLint meta-code, DocBlocks and type descriptor of the cast()
  magic function. This new syntax is preferred under PHPLint over the old form
  "array[]T" because it is shorter and forces to specify the index and the type
  of the elements, avoiding "array[]" or even worse "array". The old form can
  still be useful for PHP type-hinting, where PHP code can be mixed with
  PHPLint meta-code like in this example: function f(array /*. [int]string .*/
  $names){...}.
+ The require_once statement now requires an absolute path, otherwise an error
  is raised. The require, include and include_once now require an absolute
  path, otherwise a warning is raised. Under PHP5, you may use __DIR__ to
  retrieve the directory of the current script.
+ Class name \Exception is now reserved as root of the exceptions tree,
  whickever the module or package it may be declared in.
+ Uppercase/lowercase misspelled keywords, namespaces, contants, functions,
  classes and methods are signaled as errors, not notices. Misspelled
  namespaces and class names prevent class autoloading from working properly on
  case-sensitive file systems (Unix, Linux).
+ Generated documents: also specify which methods any given method implements
  or overrides.
+ Command line options:
    + Add --[no-]fails-on-warning (exit status 1 also on warnings).
    + Add --[no]overall (no final line summarizing total err+warn).
    + Changed behavior of the --[no-]recursive option (see manual for more).
+ On Windows, UNC file names now supported and recognized as absolute paths.
+ Documentator:
  + FIX: exit status did not accounted for errors detected generating docs
    with the --doc option.
  + FIX: in named anchors of the generated URLs, replace \ by / in namespace,
    so internal links become "YourClass.html#na/me/spa/ce::method()"
    (newer releases of FF complained about backslashes).
  + FIX: did not resolved inline tags in "throws" section.
  + DocBlocks:
    + FIX: properly renders line leading spaces (see <pre>) and empty lines.
    + Adds support for array type syntax T[][].
    + Adds non-standard new inline tag {@img URL} to add image.
    + Adds non-standard entities <sup> <sub> <blockquote> <center>.
    + Adds support for Unicode escape sequences &#DDD; and &#xHHH; so arbitrary
      codepoints can be entered.
+ Generated documentation about modules and PHPLint standard library now come
  along the distributed package.
+ phplint.tk:
  + FIX: handles properly white spaces in file names.
  + HTML links to the modules now references the local documents, not the
    www.icosaedro.it WEB site.
+ Updated modules: dom, exif, imap, json, mysqli, pgsql, simplexml, spl,
  standard, streams, zlib.
+ PHPLint Standard Library:
  + cast.php: parsed type descriptors in cast(T,...) are compiled and cached
    for better runtime performances.
  + Adds namespace it\icosaedro\containes (HashSet, HasMap, Arrays).
  + Adds namespace it\icosaedro\sql with support for MySQL and PostgreSQL.
  + Adds several utilities to the it\icosaedro\utils namespace (Bytes, Date,
    Statistics1D, Timer, UString).

Version 1.0-20110223:
====================
+ FIX: magic constants were reported as defined in the first package parsed,
  now are in the 'standard' core module.

Version 1.0-20110206:
====================
ATTENTION! Updated M2 Development System 1.5_20110205 is required in order to
succesfully compile this release of PHPLint from the M2 sources.
+ FIX: crash parsing DocBlock after import of module or library, mostly due
  to a bug in the "buffer" module of M2. The new, fixed, M2 development
  system is now required.
+ FIX: variables are definitely assigned only after the assignment, so that
  things like this one "$x=$x;" gives error if $x isn't already assigned.
+ The magic constants __DIR__, __CLASS__, __FILE__, __FUNCTION__, __LINE__,
  __METHOD__, __NAMESPACE__ are now defined built-in and do not require to
  include the standard module anymore. This is expecially useful for __DIR__
  to build absolute library paths with require_once __DIR_ . "/mypkg.php"
  even before the inclusion of the standard module itself.
+ Add special constants STDIN, STDOUT, STDERR available in PHP CLI that
  cannot be defined in regular PHP code because their type is "resource"
  and not scalar.
+ 'autoload' pragma now allows to specify the directory of the classes as a
  path relative to the autoload.php package, so that a bare '.' usually does
  the right job provided that the autoload.php package be located in the
  root directory of the classes tree.
+ Add modules: sqlite3 (Joan Llosas).
+ Updated modules: curl.

Version 1.0-20101024:
====================
+ FIX: support "static::..." as a statement outside expression (Jirka Grunt).
+ FIX: cast("SOMECLASS", $obj) with $obj bare object is allowed and,
  at runtime, $obj must be instace of SOMECLASS (Jirka Grunt).
+ FIX: cast("SOMECLASS", $obj) is allowed if $obj evaluates to null (Jirka
  Grunt).
+ FIX: meta-code keyword "missing_break" must be followed by meta-code
  semicolon, so /*. missing_break ; .*/ is the correct syntax (Petr Kostka).
+ FIX: in the autoload pragma added the 'schema1' parameter according to the
  reference manual. ATTENTION! your custom __autoload() function must now add
  this parameter as well.
+ Fixed and updated modules: dom (Dominic Sayers), spl (Jirka Grunt).

This is only a partial list that reports changes in the 5 last published versions of the program. The complete list is available in the file CHANGES of the distributed package.


Umberto Salsi

Contact
Site map
Home / Section index