{"id":18498359,"url":"https://github.com/softdevteam/pyhyp_experiments","last_synced_at":"2026-07-02T18:01:59.799Z","repository":{"id":27117678,"uuid":"30585735","full_name":"softdevteam/pyhyp_experiments","owner":"softdevteam","description":"PyHyp experiments.","archived":false,"fork":false,"pushed_at":"2016-04-27T14:05:47.000Z","size":1460,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-10-28T23:38:57.294Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/softdevteam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-02-10T09:54:44.000Z","updated_at":"2016-03-04T15:23:39.000Z","dependencies_parsed_at":"2022-09-01T19:40:11.285Z","dependency_job_id":null,"html_url":"https://github.com/softdevteam/pyhyp_experiments","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/softdevteam/pyhyp_experiments","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softdevteam%2Fpyhyp_experiments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softdevteam%2Fpyhyp_experiments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softdevteam%2Fpyhyp_experiments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softdevteam%2Fpyhyp_experiments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/softdevteam","download_url":"https://codeload.github.com/softdevteam/pyhyp_experiments/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softdevteam%2Fpyhyp_experiments/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35057450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T13:39:03.935Z","updated_at":"2026-07-02T18:01:59.776Z","avatar_url":"https://github.com/softdevteam.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyHyP Experiments\n\nThis repository contains benchmarks for our composed Python/PHP VM as well\nas other VMs.\n\n## Building\n\nIf you are using the VirtualBox image, you can skip this stage, as the VMs come\npre-built.\n\nTo build yourself, first ensure you have the following installed on a\nLinux/amd64 system:\n\n * bunzip2\n * git\n * hg\n * python\n * svn\n * unzip\n * wget\n * GCC (and gcc-multilib).\n * virtualenv\n * Dependencies of HHVM, PyPy, and HippyVM.\n\nThen run:\n\n```\n$ sh build.sh\n```\n\n## Running the Benchmarks\n\nFirst inspect the generated `config.py`. Here you can adjust (for example)\nthe number of iterations at each Kalibera level and the benchmark parameters.\n\n * In each VM dict the parameter `n_iterations` sets the number of in-process\n   iterations on a per-VM basis..\n\n * The top-level `N_EXECUTIONS` parameter sets how many process executions to\n   repeat with.\n\nThe defaults you see in the config file are the parameters we used.\n\nTo run the benchmarks:\n\n```\n$ make bench\n```\n\nResults are written to `config_results.json`.\n\nThe source code for the benchmarks is in the 'benchmarks/' directory.\n\nOn our circa 2014 benchmark machines, running the benchmarks took several\ndays.\n\n## Generating Tables\n\nThe tables from the paper can generated by running `make latex-tables`.\n\nTo make tables you need a `config_results.json` file to be present in this\ndirectory. To generate this file, run the experiment as shown above.\nAlternatively, if you are using the VirtualBox image, then the data from our\nrun can be found in ~/raw_results. You can copy the `config_results.json` file\nhere and generate tables from this.\n\nNote that the bootstrapping method we use to compute confidence intervals [1]\nis non-deterministic, so even if you use our data, expect small differences\nwith the tables you see in the paper.\n\nGenerating the tables requires a working TeX Live setup.\n\n## Case studies\n\nThe two case studies from the paper are also included.\n\nIf you are using the VirtualBox image, then the case studies come ready to run.\nPlease see the post-login message for more information.\n\nTo set up the case studies manually, run:\n\n```\n$ cd casestudies \u0026 make\n```\n\n### Prepare PyHyp\n\nPyHyP needs to have the environment variable `PYPY_PREFIX` set to the\n`pypy-hippy-bridge` folder. If you don't want to set this variable globally, you\ncan just patch the `hippyvm/hippy-c-cgi` executable by adding the appropriate\n`export`:\n\n```\n#!/bin/sh\nexport PYPY_PREFIX=PATH_TO_EXPERIMENTS/pypy-hippy-bridge/\nHIPPY=`dirname $0`/hippy-c\nexec $HIPPY --cgi \"$@\"\n```\n\n### SquirrelMail\n\nTo run the case studies you need to setup a web-server, e.g. Apache,\nLighttpd, nginx. You'll then have to replace the PHP interpreter with PyHyp.\nHere's an example configuration for lighttpd:\n\n```\n# /etc/lighttpd/conf.d/cgi.conf\ncgi.assign = ( \".pl\"  =\u003e \"/usr/bin/perl\",\n               \".cgi\" =\u003e \"/usr/bin/perl\",\n               \".rb\"  =\u003e \"/usr/bin/ruby\",\n               \".erb\" =\u003e \"/usr/bin/eruby\",\n               \".php\" =\u003e \"PATH_TO_EXPERIMENTS/hippyvm/hippy-c-cgi\",\n               \".py\"  =\u003e \"/usr/bin/python2.7\" )\n```\n\n#### Setup\n\nRun `configure` to configure Squirrelmail. At the very least you will need to\nchange the following things:\n\n* Enter your IMAP Server details in `2. Server-Settings -\u003e Update IMAP Settings`.\n* Change the `data` folder under `4. General Options -\u003e Data Directory` to\n  `../data`. Then change the ownership of `squirrelmail-4.22.1/data/` to be\n  accessible by your webserver user, e.g. `chown -R http:http data/`.\n\nFinally, point the web server to the SquirrelMail folder\n(`casestudies/squirrelmail-webmail-1.4.22/`). Here's a minimal configuration\nfile for lighttpd:\n\n```\n# This is a minimal example config\n# See /usr/share/doc/lighttpd\n# and http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions\n\nserver.modules = (\n\t\"mod_access\",\n)\n\ninclude \"conf.d/cgi.conf\"\n\nserver.port\t\t= 80\nserver.username\t\t= \"http\"\nserver.groupname\t= \"http\"\nserver.document-root\t= \"PATH_TO_EXPERIMENTS/pyhyp_experiments/casestudies/\"\nserver.errorlog\t\t= \"/var/log/lighttpd/error.log\"\ndir-listing.activate\t= \"enable\"\nindex-file.names\t= ( \"index.html\", \"index.php\" )\nmimetype.assign\t\t= (\n\t\t\t\t\".html\" =\u003e \"text/html\",\n\t\t\t\t\".txt\" =\u003e \"text/plain\",\n\t\t\t\t\".css\" =\u003e \"text/css\",\n\t\t\t\t\".js\" =\u003e \"application/x-javascript\",\n\t\t\t\t\".jpg\" =\u003e \"image/jpeg\",\n\t\t\t\t\".jpeg\" =\u003e \"image/jpeg\",\n\t\t\t\t\".gif\" =\u003e \"image/gif\",\n\t\t\t\t\".png\" =\u003e \"image/png\",\n\t\t\t\t\"\" =\u003e \"application/octet-stream\"\n\t\t\t)\n```\n\n#### Activating the plugin\n\nRun Squirrelmails `configure` once more:\n\n```\ncd squirrelmail-webmail-1.4.22/\n./configure\n```\n\nSelect: `8. Plugins`, then select `nltk` and `sympy`.\n\n#### Activate HTML emails\n\nTo be able to see rendered formulae within Squirrelmail we need to activate HTML\nviewing of emails which is deactived by default. To do that, go to the local\nSquirrelmail website, then navigate to `Options-\u003eDisplay Preferences` and check\nthe box `Show HTML Version by default` and `Submit`.\n\n#### Troubleshooting\n\n##### Sympy is missing\n\nTo be able to use Sympy we need to install it into PyHyp.\nThe easiest way to do this is to download the current Sympy version from\n`https://github.com/sympy/sympy/archive/sympy-0.7.6.1.tar.gz`. Extract\nthe `sympy` folder from the archive into `pypy-hippy-bridge/site-packages/`.\n\n### CFFI\n\nThis example can be run just using the PyHyp executable. Simply run:\n\n```\nPYPY_PREFIX=../work/pyhyp/pypy-hippy-bridge ../work/pyhyp/hippyvm/pyhyp cffi.php\n```\n\n## References\n\n[1] Quantifying Performance Changes with Effect Size Confidence Intervals,\n    Tomas Kalibera and Richard Jones, 2012.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftdevteam%2Fpyhyp_experiments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftdevteam%2Fpyhyp_experiments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftdevteam%2Fpyhyp_experiments/lists"}