Page MenuHomePhabricator

ArcanistProject
ActivePublic

Details

Description

Command-line interface for Differential

Recent Activity

May 5 2022

epriestley added a revision to T13675: Can Arcanist plausibly be compiled into a binary?: D21804: Return STDIN, STDOUT, and STDERR file descriptors from parent process.
May 5 2022, 5:27 PM · Arcanist
epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

We may fopen() an additional stdout and/or stderr handle, but do not fclose() it?

May 5 2022, 4:48 PM · Arcanist
epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

I am suspicious that D21794 may have broken something subtle with unix magic, since I'm seeing some hangs out of deployment scripts wrapping daemon management scripts. I think the issue is probably one of:

May 5 2022, 2:15 PM · Arcanist

May 4 2022

epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

What options exist for inter-process communication?

May 4 2022, 6:27 PM · Arcanist
epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

Here's how I'm thinking about overengineering this:

May 4 2022, 5:17 PM · Arcanist

May 2 2022

epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

How do modern servers written in C/C++ handle parallelizing requests?

May 2 2022, 11:06 PM · Arcanist
epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

Just for my own notes:

May 2 2022, 8:14 PM · Arcanist

May 1 2022

20after4 added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

FWIW I've found by far the easiest way to work with microcontrollers is using micropython / circuitpython on any of these chips: ESP32, ATSAMD21/ATSAMD51 and RP2040. The esp32 is in many ways the easiest and most practical because it's extremely cheap and includes a wifi radio.

May 1 2022, 9:58 PM · Arcanist

Apr 29 2022

epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

What are the practical limits of multi-system or multi-architecture binaries?

Apr 29 2022, 8:32 PM · Arcanist

Apr 28 2022

epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

I generated D21794 with a native binary that has no dependency on system PHP (but does depend on system cURL).

Apr 28 2022, 10:41 PM · Arcanist
epriestley added a revision to T13675: Can Arcanist plausibly be compiled into a binary?: D21794: Mostly remove "STDERR" and "STDOUT" constants from Arcanist.
Apr 28 2022, 10:25 PM · Arcanist
epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.
  1. PHP doesn't link cURL statically and doesn't appear (?) to provide any easy way to link it statically.
      • Possible solution: build static cURL.
      • Possible solution: link cURL dynamically.
      • Possible solution: replace cURL with mbedTLS + a first-party HTTP client, since we don't care about 99% of what cURL does. Or implement first-party TLS hahaha except I'm half-serious? If HTTP/HTTPS is going to happen from an embedded context on my coffee maker I need a healthy embeddable TLS + HTTP stack anyway.
    1. The STDERR and STDOUT constants are defined by the CLI SAPI, and not present in the embed SAPI.
      • Possible solution: define them in the C wrapper.
      • Possible solution: polyfill them at startup in PHP (I'm not entirely sure this is possible).
      • Possible solution: abstract around them and use php://stderr and php://stdout instead. See also T13556. This is likely desirable anyway.
    2. When arc tries to load PHP code, it needs to read data out of the executable binary in some set of conditions (e.g., "if we miss on disk").
      • Possible solution: hook zend_compile_file(), which seems to be the expected way to approach this. The flow in phar_compile_file() seems similar.
    3. To run unit tests, arc depends on the presence of a php binary on the system.
      • Possible solution: accept that you must also have PHP to run arc's tests (and that system PHP may differ from arc php).
      • Possible solution: also include the PHP CLI wrapper and invoke it when arc is executed as php, providing what is essentially a fallback toolset.
      • Possible solution: provide a "unit test helper" fallback toolset.
      • Possible solution: rewrite the 5 trivial cases where we need this (support/unit/*) in shell script (but: the reason to do these in PHP in the first place was so that they're portable to Windows).
Apr 28 2022, 9:44 PM · Arcanist

Apr 27 2022

epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

Can we build a single binary with a bunch of data in it (e.g., a picture of a cat) without breaking anything?

Apr 27 2022, 4:51 PM · Arcanist

Apr 23 2022

epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

Is the purpose of implementing introspection of libraries to allow for building native components that would get picked up and auto-loaded by arcanist?

Apr 23 2022, 10:08 PM · Arcanist
cspeckmim added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

I find this very intriguing.

Phabricator would benefit from having access certain services (full-text search, full-codebase search, repository graph storage) that very likely aren't practical to write in PHP

Is the purpose of implementing introspection of libraries to allow for building native components that would get picked up and auto-loaded by arcanist?

Apr 23 2022, 4:14 PM · Arcanist

Apr 22 2022

cspeckmim added a comment to T13667: Landing a mercurial revision which has no changes causes errors on the revision page as well as history viewing.

Browsing Diffusion (namely, loading a file while the published changeset is head, and trying to Skip past commit):

I couldn't immediately reproduce this; it's also probably a bit of a messy fix.

I'll plan to investigate further if possible. I believe in this case the repository was running in observed mode rather than hosted in case that might be a factor.

Apr 22 2022, 2:23 AM · Arcanist, Mercurial

Apr 21 2022

epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.

How can PHP be built statically? How hard is this?

Apr 21 2022, 11:01 PM · Arcanist
epriestley added a comment to T13675: Can Arcanist plausibly be compiled into a binary?.
$ cat random.c
int get_random_number() {
  return 5;
}
$ gcc -c -o random.o random.c
$ gcc -shared -o random.so random.o
Apr 21 2022, 10:23 PM · Arcanist
epriestley triaged T13675: Can Arcanist plausibly be compiled into a binary? as Normal priority.
Apr 21 2022, 8:24 PM · Arcanist

Apr 20 2022

epriestley added a comment to T13667: Landing a mercurial revision which has no changes causes errors on the revision page as well as history viewing.

Browsing Revision

Apr 20 2022, 6:31 PM · Arcanist, Mercurial
epriestley added a revision to T13667: Landing a mercurial revision which has no changes causes errors on the revision page as well as history viewing: D21761: Fix an issue where Herald may fail to extract content from an empty commit.
Apr 20 2022, 4:53 PM · Arcanist, Mercurial
epriestley added a revision to T13667: Landing a mercurial revision which has no changes causes errors on the revision page as well as history viewing: D21760: Fix an issue where we may "min()" an empty array when viewing a revision with no changesets.
Apr 20 2022, 4:37 PM · Arcanist, Mercurial

Mar 10 2022

yoursvivek removed a member for Arcanist: yoursvivek.
Mar 10 2022, 3:23 AM

Sep 23 2021

cspeckmim added a revision to T13668: Landing a string of dependent revisions which contains branched commits will result in stripping/pruning those branched commits: D21724: Update Mercurial's cascading of commit sets to rebase non-landed commits.
Sep 23 2021, 3:09 AM · Mercurial, Arcanist

Sep 22 2021

cspeckmim updated the task description for T13668: Landing a string of dependent revisions which contains branched commits will result in stripping/pruning those branched commits.
Sep 22 2021, 2:10 AM · Mercurial, Arcanist
cspeckmim created T13668: Landing a string of dependent revisions which contains branched commits will result in stripping/pruning those branched commits.
Sep 22 2021, 2:06 AM · Mercurial, Arcanist

Sep 16 2021

cspeckmim added a revision to T13665: The "arc amend" workflow does not work on Mercurial repositories: D21723: Make corrections to the "arc amend" workflow in Mercurial repositories to be compatible with PHP 5+.
Sep 16 2021, 6:54 PM · Mercurial, Arcanist

Sep 14 2021

cspeckmim updated the task description for T13667: Landing a mercurial revision which has no changes causes errors on the revision page as well as history viewing.
Sep 14 2021, 9:59 PM · Arcanist, Mercurial
cspeckmim updated the task description for T13667: Landing a mercurial revision which has no changes causes errors on the revision page as well as history viewing.
Sep 14 2021, 9:55 PM · Arcanist, Mercurial
cspeckmim created T13667: Landing a mercurial revision which has no changes causes errors on the revision page as well as history viewing.
Sep 14 2021, 9:49 PM · Arcanist, Mercurial

Sep 5 2021

cspeckmim closed T13665: The "arc amend" workflow does not work on Mercurial repositories as Resolved by committing rARCd246a0656259: Update ArcanistMercurialAPI to support getting the current commit ref.
Sep 5 2021, 7:25 PM · Mercurial, Arcanist

Sep 4 2021

cspeckmim added a revision to T13665: The "arc amend" workflow does not work on Mercurial repositories: D21716: Update ArcanistMercurialAPI to support getting the current commit ref.
Sep 4 2021, 4:56 AM · Mercurial, Arcanist

Sep 3 2021

cspeckmim updated the task description for T13665: The "arc amend" workflow does not work on Mercurial repositories.
Sep 3 2021, 9:47 PM · Mercurial, Arcanist
cspeckmim added a project to T13665: The "arc amend" workflow does not work on Mercurial repositories: Mercurial.
Sep 3 2021, 2:25 PM · Mercurial, Arcanist
cspeckmim added a project to T13665: The "arc amend" workflow does not work on Mercurial repositories: Arcanist.
Sep 3 2021, 2:25 PM · Mercurial, Arcanist

Jul 26 2021

epriestley closed T13659: `arc land` may fail with missing rebase extension as Resolved.

I caught one cosmetic issue in D21711, but this works properly for me locally now. Thanks!

Jul 26 2021, 6:49 PM · Arcanist, Mercurial
epriestley added a revision to T13659: `arc land` may fail with missing rebase extension: D21711: Name extension as "arc-hg", not "arg-hg".
Jul 26 2021, 6:49 PM · Arcanist, Mercurial

Jul 21 2021

cspeckmim added a revision to T13659: `arc land` may fail with missing rebase extension: D21706: Update other usages of "hg rebase" to use the new extension-enabling function.
Jul 21 2021, 8:59 PM · Arcanist, Mercurial
epriestley added a comment to T13659: `arc land` may fail with missing rebase extension.

(After picking up D21697, the approach works properly in my environment where I originally ran into this, but there are a couple of rebase calls still present in ArcanistMercurialLandEngine that don't use the new API yet.)

Jul 21 2021, 4:44 PM · Arcanist, Mercurial
cspeckmim closed T3271: Before launching $EDITOR from arc, print that we're doing it, a subtask of T13098: Plans: Arcanist toolsets and extensions, as Resolved.
Jul 21 2021, 12:37 AM · Arcanist, Plans
cspeckmim closed T3271: Before launching $EDITOR from arc, print that we're doing it as Resolved.

Marking this as resolved by D21700. If there are further details or input we can re-open to further address.

Jul 21 2021, 12:37 AM · Arcanist

Jul 20 2021

cspeckmim added a revision to T3271: Before launching $EDITOR from arc, print that we're doing it: D21700: Display informative message when arc launches an editor.
Jul 20 2021, 9:58 PM · Arcanist
cspeckmim added a revision to T13659: `arc land` may fail with missing rebase extension: D21697: Refactor how Mercurial runs commands that require extensions.
Jul 20 2021, 4:36 AM · Arcanist, Mercurial

Jul 19 2021

cspeckmim added a comment to T13659: `arc land` may fail with missing rebase extension.

I'm also surprised that rebase extension isn't enabled by default. I guess I have been turning it on in my default setup.

Jul 19 2021, 5:42 PM · Arcanist, Mercurial
cspeckmim claimed T13659: `arc land` may fail with missing rebase extension.

I like that idea. I'll take a look.

Jul 19 2021, 5:41 PM · Arcanist, Mercurial
epriestley added a comment to T13659: `arc land` may fail with missing rebase extension.

...perhaps we should consider a way to do this automatically or at least less-manually.

Jul 19 2021, 4:58 PM · Arcanist, Mercurial
epriestley triaged T13659: `arc land` may fail with missing rebase extension as Low priority.
Jul 19 2021, 4:32 PM · Arcanist, Mercurial

Jul 11 2021

cspeckmim added a revision to T13546: Modernize the "arc land" workflow: D21682: Add a prompt to allow pruning merged branches when using --hold.
Jul 11 2021, 5:57 AM · Arcanist

Jul 7 2021

cspeckmim added a revision to T13546: Modernize the "arc land" workflow: D21680: An assortment of fixes and updates to using arc-land with mercurial.
Jul 7 2021, 8:53 PM · Arcanist

Jun 28 2021

cspeckmim added a revision to T13649: Address higher-impact `arc` toolsets behaviors: D21676: Force all mercurial commands to use UTF-8 encoding.
Jun 28 2021, 12:42 AM · Arcanist