Skip to content

Discovery: can we pull this into qcs-sdk-rust and replace all calls to RPCQ? #3

@MarquessV

Description

@MarquessV

As is, can we pull this in to qcs-sdk-rust to replace the remaining RPCQ calls?

If yes, we can start planning to integrate it into qcs-sdk-rust properly

If not, whats missing? Create follow-up issues to track filling the gaps.

Discovery

The following issues were created as part of this discovery:
#7, #8, #9, #10, #12

#12 is a blocker from taking this any further. Having #8 would also be nice to understand as part of this discovery.

Assuming we can resolve the above issues, my confidence is high that this would replace RPCQ in qcs-sdk-rust. There are two functions that make RPCQ calls:

  1. compile_program:

This is where we would need #8 and #12, but the implementation would look something like:

pub(crate) fn compile_program(
    quil: &str,
    isa: TargetDevice,
    _options: CompilerOpts,
) -> Result<quil_rs::Program, Error> {
    let quilc_program = parse_program(quil.to_string());
    let chip = get_chip_spec_from_isa_descriptor(&isa); # needs issue #8
    let compiled_program = quilc_compile_program(&quilc_program, &chip);
    compiled_program.into() # needs #12
}
  1. get_version_info

This function becomes unnecessary, as there is no need to check the version of quilc for compatibility if it is an embedded dependency. We can deprecate this and return a mock value if needed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions