EZC: document persistent array limitation
Commit a wrapper script we've found useful for development

This won't work as-is for open source due to paths, but we'll fix that
up with synced commits.
Fix typehint for lambdas

Fixes #2370

Our parsing of short lambda arguments was super naive. They're basically the same thing as anonymous functions, so we need to support typehints, variadics, etc.

I can't say I love the pattern of trying to parse and seeing if it created any errors, but it works.

I also decided to add support for lambda return types. To make sure I covered everything I copied the hphp/test/quick/lambda*.php tests here, with a few small Hack related fixes (like `new bar` -> `new bar()`).

The one thing that Hack couldn't support was typing a lambda function with anonymous arguments. For example, I couldn't get this to work:

    (): (function(int): int) ==> (int $x = 4): int ==> $x;

Hack thinks that the arity doesn't match between these two functions. Internally we can deal with a function type with min/max arity, we just don't have syntax to declare it. Phooey.

Reviewed By: @jdelong

Differential Revision: D1266483
Removing Parallel query from code base

fb_parallel_query has been deleted from the other repos, now it's fbcode turn. I think I deleted everything related to it.

Reviewed By: @markw65

Differential Revision: D1273814
Implement f_strpbrk using libc's strcspn when there's no null bytes

Seems to get pack the instructions regression from the change
to a manual loop.  It looks like the libc implementation of strcspn is
similar to the implementation of strpbrk (various machine feature
detection with different implementations).  I think it is also
possible to use strcspn even if the set has null bytes in it if you
remove the null byte and record whether it should count as a hit
(since strcspn will always stop on a null byte), but this doesn't do
that.

Reviewed By: @billf

Differential Revision: D1276594
Really disable the test/run progress bar for emacs-shell users

Found yet another pattern produced by stty when I'm running
emacs shell.

Reviewed By: @alexmalyshev

Differential Revision: D1281066
Unspecialize {AsyncFunctionWaitHandle,Continuation}::Create{Func,Meth}()

After the recent cleanups, the ::Create{Func,Meth}() functions are
almost identical and it no longer makes sense to specialize them.

Merge them trivially into ::Create().

Reviewed By: @jdelong

Differential Revision: D1278319
Introduce Resumable

Introduce Resumable, a struct that contains all data needed to suspend
and resume execution. Currently used only by generators. Allows
follow-up diff that moves async functions from generators to resumable.

Reviewed By: @jdelong

Differential Revision: D1278338
Use Resumable in AsyncFunctionWaitHandle

Move AsyncFunctionWaitHandle from Continuation to Resumable. Avoids
construction of extra object per suspended async function.

Reviewed By: @jdelong

Differential Revision: D1272734
Rename ContSuspend{,K} opcodes to Yield{,K}

This opcode does everything yield does, so let's give it a proper name.

Reviewed By: @edwinsmith

Differential Revision: D1279060
Rename some 'generator' names to 'resumed' or 'resumable'

Rename most non-generator specific resumable stuff from 'generator' to
'resumable':

- *::inGenerator() -> *::resumed()
- *GeneratorSP -> *ResumableSP
- generatorStackBase() -> resumableStackBase()

Reviewed By: @jdelong

Differential Revision: D1279132
Disable flaky zend test

Reviewed By: @bertmaher
Log filename/line number from failed asserts to stacktrace files

This will put message we print to stderr in the stacktrace file,
making for much easier debugging.

Reviewed By: @edwinsmith

Differential Revision: D1222208
StrNR instead of const String& in some returns

Instruments the parts of D1072601 needed to convert const StringData*
properties to LowStringPtr (~all of it).

Reviewed By: @markw65

Differential Revision: D1278834
Use LowStringPtr for static strings

Reviewed By: @edwinsmith

Differential Revision: D1278843
Implement unread_bytes metadata for MemFile

refs guzzle/guzzle/#538

Reviewed By: @ptarjan

Differential Revision: D1280475
Fix hphpc inferring return types of builtin funcs that are ParamCoerceMode

hphpc's symbolic stack was treating the return types of builtin
functions as gospel, and not accounting for the fact they might be
marked as ParamCoerceMode. The fix is to predict the return type
instead of inferring it.

Reviewed By: @markw65

Differential Revision: D1276687
Fix dns_get_record with ipv6 only nameservers in /etc/resolv.conf

Every dns lookup needs to zero and re-init the resolver state,
otherwise undefined behaviour can happen.  With IPv4 nameservers in
/etc/resolv.conf, things seemed to work just fine, but when IPv6
namesevers are in /etc/resolv.conf, then the second request to
res_nsearch failed since it was not re-initialized.  This matches what
is done in php-git.

Reviewed By: @ptarjan

Differential Revision: D1281701
Remove JIT:: in some places where it's unnecessary

Reviewed By: @jdelong

Differential Revision: D1281421
Add String(const StringData*) = delete to type-string

Found two broken things.

Reviewed By: @jano

Differential Revision: D1274141