Skip to content

Conversation

@xSurus
Copy link

@xSurus xSurus commented Jan 9, 2026

This PR consolidates several major feature enhancements into the SeBS framework, significantly expanding runtime support and benchmarking capabilities. It introduces native support for Rust, PyPy, and Java runtimes across multiple cloud platforms, along with comprehensive tooling for cross-platform benchmarking and result visualization.

1. New Runtime Support

  • Rust: Added full support for Rust functions on AWS Lambda.
    • Implementation of wrapper code in benchmarks/wrappers/aws/rust.
    • Added rust_installer.sh and relevant Dockerfiles.
    • Implemented 010.sleep and 110.dynamic-html benchmarks in Rust.
    • Added documentation in docs/rust-support.md.
  • PyPy: Added support for PyPy (Python JIT) across AWS, Azure, GCP, and Local deployments.
    • Extensive updates to sebs core and dockerfiles to handle PyPy environments.
    • Added PyPy implementations for numerous benchmarks (webapps, multimedia, scientific).
  • Java: Added support for Java runtime on AWS and Azure.
    • Included java_installer.sh and Maven project structures.
    • Implemented benchmarks in Java.

2. Platform Enhancements

  • GCP: Added support for container-based deployments (sebs/gcp/container.py) and ARM64 architecture support.
  • AWS: Updated deployments and system configurations (Amazon Linux 2023).
  • Azure: Added support for Java and PyPy runtimes.

toooadi and others added 30 commits December 1, 2025 14:14
Yes, correct. Oversaw this.

Co-authored-by: Mark <mrkswrn@gmail.com>
Implements complete Java runtime infrastructure enabling serverless
function benchmarking on AWS Lambda and Azure Functions platforms.

Key components:
- AWS/Azure function wrappers with cold start tracking and JSON handling
- Maven-based build system with shaded JAR packaging
- Docker build images for both platforms (Java 17)
- Package structure: lib/ for JARs, handler/ for function metadata

Benchmarks implemented:
- 010.sleep: Basic microbenchmark for testing infrastructure
- 110.dynamic-html: Web app with Mustache templating

Critical fixes:
- Removed Maven quiet mode (-q) causing Docker build failures
- Proper dependency scoping (Azure Functions and Jackson must be compiled, not provided)
- Platform-specific packaging logic (JAR structure differs from Python/Node.js)

Tested and verified working on Azure Functions with Java 17.
fix gcp images to specific runtime versions instead of ubuntu
toooadi and others added 6 commits December 16, 2025 21:15
…rking Tools

- Added Rust runtime support (AWS)
- Added PyPy support (AWS, Azure, GCP, Local)
- Added Java runtime support (AWS, Azure)
- Added cross-platform benchmarking scripts
- Enhanced plotting and visualization tools
- Updated Dockerfiles and system configurations
- Removed sensitive credentials from config files
- Deleted `plot_comparison.py` and associated plotting functions.
- Removed `run_comparison.sh` and `run_sebs_with_plots.sh` scripts for benchmark execution and plot generation.
- Cleaned up the repository by eliminating unused files related to benchmarking and visualization.
- Modified `java_installer.sh` to use `mvn clean package` for more reliable builds.
- Updated `Dockerfile.function` to unzip the function JAR and remove the original after extraction.
- Removed unnecessary comment in `pom.xml`.
- Updated `entrypoint.sh` to ensure correct ownership of the `/mnt/function` directory.
- Modified `benchmark.py` to include Java files in the hash calculation and added logic for handling Java installer script.
- Improved error handling and logging for Docker builds, particularly for Rust projects.
@coderabbitai
Copy link

coderabbitai bot commented Jan 9, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think you need an extra object implementation for this. For "parallel" invocations, AWS Lambda spins up new instances. You can simply check for the marker file's existence in the handler.

except ImportError as e:
# Try AWS-style import as fallback
try:
from function import function as aws_function_module
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this ever happen?

'results_time': results_time,
'result': log_data,
'is_cold': is_cold,
'is_cold_worker': is_cold_worker,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this used for in processing?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Roll back these changes. This is a kind of tutorial file we shouldn't touch.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove this

for f in matches:
dest = os.path.join(output_dir, os.path.basename(f))
self.logging.info(f"copy_code: Copying {f} to {dest}")
shutil.copy2(f, dest)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this not do the exact same?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes but more logging, had issues with rust

Remove ColdStartTracker and refactor cold start detection in AWS Java handler

- Deleted ColdStartTracker class from the Java AWS wrapper.
- Integrated cold start detection logic directly into the Handler class.
- Updated configuration to reflect changes in runtime language and version.
- Removed unused cross-platform benchmarking script to streamline the repository.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants