ucall

Remote Procedure Calls - 50x lower latency and 70x higher bandwidth than FastAPI, implementing JSON-RPC & 🔜 REST over io_uring and SIMDJSON ☎️

APACHE-2.0 License

Downloads
8.6K
Stars
964
Committers
8

Bot releases are hidden (Show)

ucall - v0.5.5 Latest Release

Published by ashvardanian 6 months ago

0.5.5 (2024-04-15)

Improve

  • Lua & Go benchmarks, docs (#93) (57e5795), closes #93
ucall - v0.5.4

Published by ashvardanian 8 months ago

0.5.4 (2024-03-05)

Fix

  • Casting and formatting in CLI (fd923d1), closes #81

Make

  • Extend CPython labels for visibility (c331893)
ucall - v0.5.3

Published by ashvardanian 8 months ago

0.5.3 (2024-02-19)

Make

ucall - v0.5.2

Published by ashvardanian 9 months ago

0.5.2 (2024-01-27)

Make

ucall - v0.5.1

Published by ashvardanian over 1 year ago

0.5.1 (2023-06-08)

Build

Docs

Fix

  • interface is a macro in MSVC. (bed3f79)
  • Add winsock includes to support windows. (d0314b1)
  • Currently iovecs are required only for uring. (9d850be)
  • MSVC by default makes Debug build. (0a6c40d)
  • Redundant ; is a problem on MSVC (578e741)
  • Workflows (61e8968)

Make

  • Add MSVC specific flags. (18a8276)
  • Enable windows build on pipelines (7210d02)
  • Refactor pyproject and setup.py for Windows (2f23d56)

Refactor

  • engine_posix for Windows compatibility (c3d40a5)
  • Remove unused include (07ae160)
  • Use fileno for cross-compatibility. (0a72a71)
ucall - v0.5.0

Published by ashvardanian over 1 year ago

0.5.0 (2023-05-19)

Add

  • Type-checking safeguards (1b866ae)

Build

  • Temporarily disable automated versioning (019ab19)
  • Trusted publishing to PyPi (7663cf3)
  • Use Trusted Publishing for PyPi (ca18d8c)

Docs

  • Cleanup CLI help and type annotations (83cabd1)

Refactor

ucall - v0.4.0

Published by ashvardanian over 1 year ago

0.4.0 (2023-04-21)

Add

Build

Chore

  • Enable A64 for SHA512/256. (a18ff14)

Docs

Fix

  • ujrpc_ssl_context_t corruption on move. (50ec686)
  • Check malloc. (3ee198d)
  • Check crts path too. (faf92a6)
  • Comparing with std::error_code produced an UB. (aded2a9)
  • Comparing with std::error_code produced an UB. (0c72246)
  • More stable way to send and recieve packets. (eec88cd)
  • Raise Exception in Python if Server Init Failed. (37b924b)
  • Recieve full packet, both with and without tls. (bc0dd92)
  • TLS socket closed check. (8e92515)
  • Wrong Content-Length for tls. (5e6a7b8)

Improve

  • Drop iovecs from posix engine. (4ccb182)

Refactor

  • Add ssl placeholders (34b54bc)
  • Dropped batch_response_t. (824fb5c)
  • Formatting, variable names (1416141)
  • independent _make_socket (421df2e)
  • Initialize all members the same way. (e2671d3)
  • Remove redundant send_reply (3a56ba1)
  • Removed redundant check. (2cb8b11)
  • Rename sum to login in lunch.json (22564cf)
  • Rename UJRPC into UCall (7c15d49)
  • Rename UJRPC into UCall (1bcb43e)
  • wrapped to rich (c0ccfee)
ucall - v0.3.0: CLI Support!

Published by ashvardanian over 1 year ago

0.3.0 (2023-04-03)

We all ❤️ cURL for its CLI. It's the fastest way to test a REST API server.
How about JSON-RPC? Now, there is a way 🥳

ujrpc vectorize description='Product description' -i image=./local/path.png

To address a remote server:

ujrpc vectorize description='Product description' -i image=./local/path.png --uri 0.0.0.0 -p 8545

No additional installations are needed. Simply upgrade UJRPC to v0.3 with the following code:

pip install --upgrade ujrpc==0.3

An interactive version, colored outputs, and profiling are in the works!
But first, we'll add a pinch of TLS! Stay tuned 😉

ucall - v0.2.8

Published by ashvardanian over 1 year ago

0.2.8 (2023-03-29)

Build

  • Include uring regardless of the kernel. (13eb530)

Make

Upgrade

  • Drop python 3.7, 3.8. Use manylinux_2_28. (4b4b9a8)
ucall - v0.2.7

Published by ashvardanian over 1 year ago

0.2.7 (2023-03-29)

Make

  • Stricter versioning in CMake (89a42b7)

Upgrade

ucall - v0.2.6

Published by ashvardanian over 1 year ago

0.2.6 (2023-03-27)

Make

ucall - v0.2.5

Published by ashvardanian over 1 year ago

0.2.5 (2023-03-27)

Make

  • Docs publication permissions (6f057e0)
ucall - v0.2.4

Published by ashvardanian over 1 year ago

0.2.4 (2023-03-27)

Build

  • Add Pipeline for generating docs. (779ca91)

Docs

  • Fix styles and add Github link. (79e8181)
  • Mention stripped release VERSION (fca795a)
  • Mention stripped release VERSION (eb339be)
  • Show examples in docs. (7600c31)

Make

ucall - v0.2.3

Published by ashvardanian over 1 year ago

0.2.3 (2023-03-23)

Make

  • Deprecated release rules (bf75cff)
ucall - v0.2.2

Published by ashvardanian over 1 year ago

0.2.2 (2023-03-23)

Make

  • Python to use latest VERSION (d67079c)
ucall - v0.2.1

Published by ashvardanian over 1 year ago

0.2.1 (2023-03-23)

Make

ucall - v0.2.0

Published by ashvardanian over 1 year ago

0.2.0 (2023-03-23)

Add

  • Benchmark Code (a7b7928)
  • Catching error in python server for posix. (4452a07)
  • FastAPI version of the same benchmark (3c3de53)
  • Positionals for python. Closes #29 (f6cd8c4), closes #29
  • Print server startup info in python too. (7281a00)
  • quiet flag. (51364a7)
  • Semantic Versioning (a7e421a)
  • Use raw TCP for Client instead requests (fcede79)

Build

Docs

  • Add PR template, and editor configs (df753e5)

Fix

Make

Refactor

ucall - v0.1.0

Published by ashvardanian over 1 year ago

The three of us - @ishkhan42, @VoVoR, and @ashvardanian have added support for NumPy arrays and Pillow images as RPC arguments, adding a small Client class along the way! The following example shows how to serve UForm multi-modal vision-language transformers in just a few lines of Python, connecting dozens of SIMD-accelerated libraries under the hood for ultimate performance!

from ujrpc.rich_posix import Server
import ufrom

server = Server()
model = uform.get_model('unum-cloud/uform-vl-multilingual')

@server
def vectorize(description: str, photo: PIL.Image.Image) -> numpy.ndarray:
    image = model.preprocess_image(photo)
    tokens = model.preprocess_text(description)
    joint_embedding = model.encode_multimodal(image=image, text=tokens)

    return joint_embedding.cpu().detach().numpy()

A new UKV release and the public rollout of UNSW are also right around the corner!