10
I Use This!
Very High Activity

News

Analyzed about 16 hours ago. based on code collected 1 day ago.
Posted about 5 years ago by Fred Emmott
HHVM 4.84 is released! This release marks the end of support for 4.78; HHVM 4.79–4.82 remain supported, as does the 4.56 LTS release. This primarily contains internal improvements for performance, maintainability, and preparation for future work. We ... [More] will not be releasing 4.85 next week due to US holidays; we expect the next release to be 4.86, during the week of 2020-11-30. Highlights Fixed propagation of reified generics in class B extends A when A’s T parameter is reified, but B’s is not. Future Changes Indexing into a string with an index that is not an arraykey will throw an InvalidArgumentException; currently, it emits a String offset cast occurred notice. [Less]
Posted about 5 years ago by Ján
A security update has been released for all supported HHVM versions. Please update to one of the following versions to make sure you’re secure: 4.56.2 4.78.1 4.79.1 4.80.1 4.81.1 4.82.1 4.83.1 This security update addresses the ... [More] following vulnerabilities: dump-static-strings (CVE-2019-3555) and dump-pcre-cache (CVE-2019-3556) admin endpoints can write to any file the webserver has access to out of bounds read in crypt() light-process.cpp not dropping privileges correctly integer overflow in gdImageCreate() null pointer dereference in XMLReader::expand() buffer overflow in ldap_escape() (CVE-2020-1916) [Less]
Posted about 5 years ago by Ján
HHVM 4.83 is released! This release marks the end of support for 4.77; HHVM 4.78–4.82 remain supported, as does the 4.56 LTS release. Breaking Changes Attributes used on lambda functions must now be defined, similarly to attributes used in any ... [More] other position. To allow an attribute to be used on lambda functions, its definition must implement the interface \HH\LambdaAttribute. The option hhvm.hack.lang.enable_first_class_function_pointers was removed. The new function reference syntax is now always enabled. The option hhvm.emit_cls_meth_pointers is now enabled by default. It causes the built-in function class_meth() to return values in the same format as the new function reference syntax, which should make migrating easier. For easier migration, the additional option hhvm.is_compatible_cls_meth_type = 1 can be used to allow both formats to be considered valid. Future Changes The built-in functions fun() and class_meth() will be removed in a future release. Use the new function reference syntax instead. The INI option hhvm.hack.lang.disallow_fun_and_cls_meth_pseudo_funcs = 1 and .hhconfig option disallow_fun_and_cls_meth_pseudo_funcs = true can be used to disable these functions in the current HHVM release. [Less]
Posted about 5 years ago by Fred Emmott
HHVM 4.82 is released! This release marks the end of support for 4.76; HHVM 4.77–4.81 remain supported, as does the 4.56 LTS release. Highlights AsyncMysqlQueryResults has the new method dictRowsTyped(): vec>. Improved several typechecker ... [More] error messages for incompatible method overrides, e.g. when an override has more mandatory arguments. Breaking Changes array_fill_keys() will now throw an InvalidArgumentException if the first argument is not a Container; in previous versions, HHVM would return false. With this change, array_fill_keys() now only returns darrays. improved correctness when type constants are accessed via inferred union or intersection types. This can both lead to fewer incorrect type checker errors, but also additional correct type checker errors. [Less]
Posted about 5 years ago by Ján
HHVM 4.81 is released! This release marks the end of support for 4.75; HHVM 4.76–4.80 remain supported, as does the 4.56 LTS release. Highlights A new built-in type AnyArray was added, representing the parent type of all containers that are ... [More] values (vec, dict, keyset, varray, darray; does not include containers with reference semantics like Vector). It is a subtype of KeyedContainer. Breaking Changes The INI option hhvm.hack_arr_dv_arr_var_dump was removed. var_dump will now always output varray or darray instead of array. Future Changes Similarly to var_dump, var_export will also start distinguishing between varray and darray. Use the INI option hhvm.hack_arr_dv_arr_var_export=1 to enable this behavior now. Support for # comments will be removed in a future release. Use // or /* instead. Shebang at the beginning of a Hack file will stay supported. [Less]
Posted about 5 years ago by Fred Emmott
HHVM 4.80 is released! This release has long term support, so: this release will be supported for approximately 48 weeks the next LTS will be released in approximately 24 weeks HHVM 4.56 (LTS) and HHVM 4.75–4.79 remain supported. support ... [More] has ended for HHVM 4.32 (LTS) Highlights The bytecode cache can now store SystemLib units; this can lead to a better experience if HHVM is executed multiple times. Clearer error messages for unresolved subtypes of mixed; prior versions can refer to the null or nonnull subtypes of mixed, which are more specific, but can be confusing. Clearer error messages for variance mismatches: errors now say a type argument “only allows supertypes (it is contravariant”) or “must match exactly (it is invariant)”. Fixed a caching bug when a source file appears to be modified, but the content (or bytecode) is unchanged, for example, by using touch; in prior versions, this leads to immediately exiting earlier, however the metadata should be updated to reflect the new modification time. Breaking Changes A typechecker error is now raised if the __LSB or __MemoizeLSB attributes are used in a final class. If this is raised, fix by removing the __LSB attribute, and replacing __MemoizeLSB with __Memoize. Switch statements now throw if no case or default matches. for loop conditions no longer permit comma-separated expressions. In prior versions, the behavior could be surprising - for example, in for(;foo(), bar();) {}, the return value of foo() is ignored. Commas are still permitted in other positions other positions, e.g. for ($i = 0, $j = 0; some_func($i, $j); ++$i, $++j). Future Changes The following runtime type warnings will be changed to raise errors in a future release. Initially, this will be done by changing the INI setting from 1 (warn) to 2 (error), and we then expect to remove the options entirely. Attempting to recover from these errors may lead to additional irrecoverable errors. Upper bounds of generics: hhvm.enforce_generics_ub Property type hints: hhvm.check_prop_type_hints [Less]
Posted about 5 years ago by Ján
HHVM 4.79 is released! This release marks the end of support for 4.73; HHVM 4.74–4.78 remain supported, as do the 4.32 and 4.56 LTS releases. Highlights Introducing new function reference syntax. See updated guide. For example: ... [More] fun('foo') becomes foo<> class_meth(Foo::class, 'bar') becomes Foo::bar<> Breaking Changes HHVM now raises a notice when a method is called with incorrect case (e.g. $obj->Foo() instead of $obj->foo()). The typechecker had already been raising errors in all such cases. In the future, we expect these notices to become runtime errors. the notices can be temporarily disabled using the INI option hhvm.raise_on_case_insensitive_lookup_v2=false The typechecker now raises an error if new self(...) or new parent(...) is used inside a class with reified generic type parameters. The typechecker now raises an error when trying to pass a dynamic-typed value where an enforceable reified generic type is expected. Some typechecker errors were moved to a more appropriate location. This doesn’t introduce any new errors, but may require HH_FIXMEs to be moved. This includes: calling a function with the wrong number of arguments (now an error at the point of the call, instead of the function declaration) passing a non-reified generic type parameter where a reified one is expected Future Changes The built-in functions fun and class_meth will be removed in a future HHVM release, in favor of the new function reference syntax. We expect method names to become case sensitive soon (currently a typechecker error but only a notice at runtime, see above). [Less]
Posted about 5 years ago by Fred Emmott
HHVM 4.78 is released! This release marks the end of support for 4.72; HHVM 4.73–4.77 remain supported, as do the 4.32 and 4.56 LTS releases. Highlights The (class|function|interface|trait)_exists functions are now more optimized in ... [More] repo-authoritative mode. This takes advantage of the fact that all HHBBC definitions are now unique and persistent. Improved the typechecker error for invalid (string) casts. var_dump() now distinguishes between varrays and darrays by default, instead of reporting both as array. Breaking Changes is shape(...) requires a darray, and is tuple(...) requires a varray; is checks with reified generics are now consistent with this when the generic is a shape or tuple. Previously, reified generics were more permissive. require() and related functions no longer support URIs, e.g. file://foo.hack. All special-casing for array has been removed from the parser. It is now parsed as a name token, like user-defined types. Future Changes calling array_fill_keys() will require that $keys is a Container; this will allow specifying a darray return type. Currently, it will return null if $keys is not a Container. [Less]
Posted about 5 years ago by Ján
HHVM 4.77 is released! This release marks the end of support for 4.71; HHVM 4.72–4.76 remain supported, as do the 4.32 and 4.56 LTS releases. Highlights Removed redundant typechecker error 4164 (“Properties cannot be declared final”). The same ... [More] issue is already reported as a parsing error (1002). Improved IDE support: The “rename” operation now also supports type aliases. Breaking Changes The Xbox extension no longer supports inter-process communication (local or remote). It can still be used for in-process parallelism (xbox_task_* functions). Removed built-in functions: xbox_send_message xbox_post_message xbox_get_thread_timeout xbox_set_thread_timeout xbox_schedule_thread_reset xbox_get_thread_time A constant can no longer be used as a shape key if its type is an opaque type alias (a newtype not from the same file). This makes it more consistent with how opaque type aliases can be used in other contexts. [Less]
Posted about 5 years ago by Ján
HHVM 4.76 is released! This release marks the end of support for 4.69; HHVM 4.71–4.75 remain supported (4.70 was skipped), as do the 4.32 and 4.56 LTS releases. Highlights The typechecker now allows method calls on generic types with multiple ... [More] upper bounds, as long as the method call is valid for all of them (example). Previously, it was an error if the method declarations weren’t identical on all of the upper bound types. The typechecker now more accurately tracks the types of all local variables when dealing with nested try/catch/finally blocks (examples). This allows some programs to typecheck that previously would have failed. Breaking Changes $GLOBALS was removed. Global variables can still be accessed using the following functions: HH\global_get HH\global_isset HH\global_key_exists HH\global_set HH\global_unset The typechecker now reports an error if a trait with any final methods is included multiple times in the same class (this can happen e.g. if the trait is used from a class as well as its parent class). Previously, this caused a runtime error but wasn’t caught by the typechecker. Fixed some loopholes that allowed assigning a value to a variable named $this. In almost all cases, it had already been banned by both the typechecker and the runtime, but there were some remaining edge cases: catch (Exception $this) calling a function with inout $this as an argument unset($this) ?enum {...} is no longer a valid XHP attribute type. Use enum {...} instead, which is equivalent (XHP attributes are nullable unless declared as @required). Using $$ (special variable inside a pipe expression) as an inout argument now raises a fatal error at runtime. It had already been a typechecker error. [Less]